はじめての C

[Learning GNU C]

6.4. 配列の 初期化 initialize

先ほどの 例題では 配列 "hourly_wage" を コンマで 区切られた 値を 中カッコ "{ }" に 置くことで 初期化した。 この方法を 使えば 多少に かかわらず 配列の 要素を 思うように 初期化できるが 始めに 全ての 要素を 初期化する 以外は 要素を 初期化することが できない。 仮りに 全ての 配列の 要素でなく そのうちの いくらかを 初期化すると 残りの 要素は 自動的に ゼロに 初期化されるだろう。

この不具合を 避けるため GNU の C language への 拡張では 番号 (指数) を 選択して 配列の 要素の 初期化が できる。 番号によって 初期化するときは どのような 順序であれ 要素を 前もって [index] = value と することで 中カッコに 置くことが できる。 こういう ふうに、

Example 6-2. initialize_array.c

#include <stdio.h>

int
main()
{
int i;
int first_array[100] = {[90] = 4, [0] = 5, [98] = 6};
double second_array[4] = {[3] = 1.01, [4] = 1.02};

printf("sure enough, first_array[90] == %d\n\n", first_array[90]);
printf("sure enough, first_array[99] == %d\n\n", first_array[99]);

for (i = 0; i < 5, i++)
printf("value of second_array[%d] is %f\n", i, second_array[i]);

return 0;
}