C ++:使用sizeof的char数组的大小

时间:2012-05-24 10:49:32

标签: c++ arrays string sizeof

在C ++中查看以下代码:

char a1[] = {'a','b','c'};
char a2[] = "abc";
cout << sizeof(a1) << endl << sizeof(a2) << endl;

虽然sizeof(char)是1个字节,但为什么输出显示sizeof(a2)为4而不是3(如a1的情况)?

3 个答案:

答案 0 :(得分:16)

C-strings包含一个空终止符,因此添加了一个字符。

基本上就是这样:

char a2[] = {'a','b','c','\0'};

答案 1 :(得分:1)

那是因为在C字符串的末尾添加了一个额外的空'\0'字符,而第一个变量a1是一个包含三个单独字符的数组。

sizeof将告诉您变量的字节大小,但如果您想在运行时获得C字符串的长度,则更喜欢strlen

答案 2 :(得分:0)

对于a2,这是一个字符串,因此它还包含'\ n'

修正,在Ethan&amp; Adam注释,这当然不是'\ n',而是null终结符,即'\ 0'