在C ++中查看以下代码:
char a1[] = {'a','b','c'};
char a2[] = "abc";
cout << sizeof(a1) << endl << sizeof(a2) << endl;
虽然sizeof(char)
是1个字节,但为什么输出显示sizeof(a2)
为4而不是3(如a1
的情况)?
答案 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'