例えば:
_char a[] = "abc\0";
_
標準Cは、文字列の末尾にすでにゼロがある場合でも、値_0
_の別のバイトを追加する必要があると言っていますか?それで、sizeof(a)
は4または5に等しいですか?
すべての文字列リテラルには、文字列の内容に関係なく、暗黙のnullターミネーターがあります。
標準(6.4.5文字列リテラル)は次のように述べています。
文字列リテラルまたはリテラルから生じる各マルチバイト文字シーケンスに、値0のバイトまたはコードが追加されます。
したがって、文字列リテラル"abc\0"
には、明示的なnullターミネータに加えて、暗黙的なnullターミネータが含まれています。したがって、配列a
には5つの要素が含まれています。