今天在图灵读者群问了一个蠢问题。
#include
void fortune\_cookie(char msg[])
{
printf("Message reads: %s\n", msg);
}
int main()
{
char quote[] = "Cookies make you fat";
fortune\_cookie(quote);
return 0;
}
我的问题是:为什么 msg 的前面不加 “*”? C语言中,字符串即是字符数组。在传递字符串时,只能传递数组中第一个元素的地址,然后程序循着这个地址依次向后读取字符,直到遇到”\0″。msg 是一个指针,指向字符串”Cookies make you fat”中的第一个字母”C”。给指针变量加”*”,读取的是指针指向的存储器地址中保存的数据,而我们想要的原是根据字符数组第一个元素的地址读取整个字符串,显然这与我们的期望不符,况且,C语言也不允许这样做。