对于相同的字符串值,我在sizeof上获得了不同的值。
当我在C中运行以下代码时:
char str[] = "November";
char *s = "November";
printf(" str[] = %ld\n",sizeof(str));
printf(" *s = %ld\n",sizeof(s));
预期输出:
str[] = 9
*s = 9
实际输出:
str[] = 9
*s = 8
实际上发生了什么?
答案 0 :(得分:4)
sizeof(str)
是char
数组str
的大小,其中包含9个元素(包括空终止符),因此包含9个字节。
sizeof(s)
是指向char
的指针的大小,在您的系统上为8个字节
答案 1 :(得分:3)
sizeof()不是strlen()
指针的大小不是指向元素的大小