怎么把字符串传给函数?
你知道了怎么把一些简单的值以参数的形式传给函数,但如果想传一些更复杂的东西呢?比如字符串。如果你还记得上一章的内容,就知道在C语言中字符串其实是字符数组,也就是说如果你想把字符串传给函数,可以这么做:
你把参数msg
定义为数组,但是因为不知道字符串有多长,所以msg
没有长度。这似乎很简单,但奇怪的事发生了……
亲爱的,谁截了我们的字符串?
C语言中有一个叫sizeof
的运算符,它能告知某样东西在存储器中占多少字节,既可以对数据类型使用,也可以对某条数据使用。
但当你检查传入函数字符串的长度时,离奇的事情发生了:
void fortune_cookie(char msg[])
{
printf("Message reads: %s\n", msg);
printf("msg occupies %i bytes\n", sizeof(msg));
}
程序并没有显示字符串总长,而是返回了4或8个字节。发生了什么事?为什么fortune_cookie()
认为我们传进来的字符串比实际要短?
脑力风暴
你认为是什么原因导致
sizeof(msg)
小于整个字符串的长度?msg
是什么?为什么在不同的计算机上返回的大小不同?