我刚开始学习如何编程,我正在使用这本名为《Head First C》的书。书中有一些章节叫做脑力。在其中一个部分中写了它。
void fortune_cookie(char msg[])
{
printf("Message reads: %s\n", msg);
printf("msg occupies %i bytes\n", sizeof(msg));
}
输出:
Cookies make you fat
msg occupies 8 bytes
脑力问题是:为什么您认为 sizeof(msg)
比整个字符串的长度短?什么是 msg
?为什么它会在不同的机器上返回不同的尺寸?
最佳答案
在这种特殊情况下
char msg[]
与
相同 char * msg
所以您真正看到的是 sizeof(char *)
的输出。
由于指针的大小取决于架构/编译器,您会在不同的机器上看到不同的输出。
此外,请注意,由于 sizeof
运算符生成类型为 size_t
的结果,因此您应该使用 %zu
格式说明符来打印结果。
关于c - 为什么 sizeof(msg) 比字符串短?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800842/