BohYoh.comトップページへ
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
標準C99 §6.7.8 Initialization
標準C++ §8.5.2 Character Arrays

戻る

BohYoh.comロゴ