以null终止符结尾的字符串文字是否包含额外的空终止符?

xia*_*aoy 43 c string standards

例如:

char a[] = "abc\0";
Run Code Online (Sandbox Code Playgroud)

标准C是否说0必须附加另一个值的字节,即使字符串最后已经为零?那么,sizeof(a)等于4还是5?

Dav*_*nan 66

无论字符串的内容如何,​​所有字符串文字都有一个隐式的空终止符.

标准(6.4.5字符串文字)说:

将值为零的字节或代码附加到由字符串文字或文字产生的每个多字节字符序列.

因此,"abc\0"除了显式的字符串文字之外,字符串文字还包含隐式的空终止符.因此,该数组a包含5个元素.

  • @BikalGurung:不,5是对的.{'a','b','c','\ 0','\ 0'} (16认同)