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

时间:2013-07-30 09:37:43

标签: c string standards

例如:

char a[] = "abc\0";

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

1 个答案:

答案 0 :(得分:61)

所有字符串文字都有一个隐式的空终止符,与字符串的内容无关。

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

  

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

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