有问题的代码:
#include <stdio.h>
int main(void) {
char *a[10] = {"hi", "Hello", "how"};
printf("%d\n", sizeof(a));
printf("%s\n%s\n%s\n", a[0],a[1],a[2]);
printf("%d\n%d\n%d\n", sizeof(a[0]),sizeof(a[1]),sizeof(a[2]));
printf("%d", sizeof("Hello"));
return 0;
}
输出:
40
hi
Hello
how
4
4
4
6
我不知道为什么会这样,我还在 cppreference 上查找了 sizeof
的引用资料| .仍然不知道为什么它在应该需要 6 来存储它时为“Hello”返回 4。
最佳答案
它实际上打印指针的大小而不是字符串内容本身。看所有大小都打印为 4 个字节。
关于c - 为什么字符串数组中的 "Hello"的大小为 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548536/