【发布时间】:2018-09-07 00:49:57
【问题描述】:
#include <stdio.h>
int main(void)
{
char a[] = "Love you!";
char *b = "Love you!";
printf("%s\n", a);
printf("Length: %d\n", sizeof(a));
printf("%s\n", b);
printf("Length: %d\n", sizeof(b));
return 0;
}
看上面的代码。
这是输出:
Love you!
Length: 10
Love you!
Length: 8
我理解 char a[] = "Love you!" 有 10 个字符,末尾有一个不可见的 '\0'。
我没有得到的是 char *b 的长度只有 8 个,而其中的字符可以完美打印。
C中sizeof计算char a[]和char *a有什么区别?
【问题讨论】:
-
也许您错误地将“数组”的内存模型视为实际上是一个数组加上一个指针。但是没有指针,只有数组。