有一个问题让我困惑。下面的代码中 msg 和 quote 都是 char 数组。为什么 sizeof(msg) 和 sizeof(quote) 给出了不同的结果?
代码:
#include <stdio.h>
void fortune_cookie(char msg[])
{
printf("Message reads: %s\n",msg);
printf("msg occupies %i bytes\n",sizeof(msg));
}
int main()
{
char quote[] = "Cookies make you fat";
printf("quote occupies %i bytes\n",sizeof(quote));
fortune_cookie(quote);
return 0;
}
结果:
quote occupies 21 bytes
Message reads: Cookies make you fat
msg occupies 8 bytes
最佳答案
sizeof
数组等于 sizeof
每个元素的总和。
当您将数组传递给函数时,它会传递指针。
就您而言:
quote
占用 21 个字节:表示你的 char 数组有 21 个元素,每个元素大小为 1。
msg
占用 8 个字节:表示您的参数是一个指针,在 64 位机器上将保存 8 个字节,在 32 位机器上将保存 4 个字节。
关于c - C 数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536564/