C & C++ FAQ
目次
C
C++
宣言char s[3]="ABC";は正しいでしょうか。
文字列を初期化する宣言
char s[3] = "ABC";
は、C言語とC++言語では異なった解釈がなされます。
C
配列sの要素s[0], s[1], s[2]は、三つの文字'A', 'B', 'C'で初期化されます。すなわち、sは文字列というよりも、単なる《文字の配列》と解釈されます。
C++
初期化子の末尾にはナル文字が付加されており'A', 'B', 'C', '\0'の4文字とみなされます。配列の要素数3より大きくなりますので、エラーとなります。
■ 根拠 ■
標準C
§6.5.7
Initialization
標準C
99
§6.7.8
Initialization
標準C++
§8.5.2
Character Arrays
戻る