BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ 配列の初期化方法を教えてください。

 宣言時に、各要素に対する初期化子を先頭から順に,で区切って{ }で囲んだものを与えると、配列の要素を初期化できます。
 たとえば、

int a[5] = {1, 2, 3, 4, 5};

と宣言すると、要素a[0], a[1], a[2], a[3], a[4]が順に1, 2, 3, 4, 5で初期化されます。
 もしも、すべての要素を0で初期化するのであれば、配列aの宣言は、次のようになります。

int a[5] = {0, 0, 0, 0, 0}; /* すべての要素を0で初期化 */

 ただし、初期化子を与える配列の宣言では、初期化子が与えられていない要素は0で初期化されるという規則がありますので、

int a[10] = {0}; /* すべての要素を0で初期化 */

と宣言すると、初期化子が与えられていないa[1]以降の要素も0で初期化されます。
 配列の要素数を省略して、

int a[] = {1, 2, 5};

と宣言すると、初期化子の数に基づいて、その要素数は3となります。すなわち、以下の宣言と同じです。

int a[3] = {1, 2, 5};

 なお、初期化子の数が、配列の要素数を超えるとエラーになります。

int a[3] = {1, 2, 3, 5}; /* エラー:初期化子が多すぎる */


■ 根拠 ■
標準C §6.5.7 Initialization
標準C99 §6.7.8
標準C++ §8.5 Initializers

戻る

BohYoh.comロゴ