即使两个变量包含相同的字符串,sizeof()也会返回不同的值

时间:2018-12-20 08:36:14

标签: c arrays string pointers sizeof

对于相同的字符串值,我在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

实际上发生了什么?

2 个答案:

答案 0 :(得分:4)

  • sizeof(str)char数组str的大小,其中包含9个元素(包括空终止符),因此包含9个字节。

  • sizeof(s)是指向char的指针的大小,在您的系统上为8个字节

答案 1 :(得分:3)

sizeof()不是strlen()

指针的大小不是指向元素的大小