変数を用意する記述(つまり変数宣言)において、特定のデータが記憶されるように、 =の宣言子を伴う指定を変数の初期化と呼びました。
配列も同様に=の宣言子で次のように可能です。ここでは、先頭要素から
2.09, 2.1, 4.2, 6.3, 5.4, 1.5 と順番に初期化している例です。
double da[] = { 2.09, 2.1, 4.2, 6.3, 5.4, 1.5 };
上記のように、記憶構造をイメージで捉えるようにしてください。
さて、[]の中の配列要素数を省略していますが、これは=の宣言子による
初期化を伴う場合に可能な表現で、並べたデータの個数が省略されています。つまりこの例では、
6が省略されています。
次のように並べた数より大きな数を指定した場合は、初期化データがない範囲の要素が 0に初期化されます。
double da[10] = { 2.09, 2.1, 4.2, 6.3, 5.4, 1.5 };
次のように、配列要素数で指定する数が、初期化で並べた数より小さいと、一般的にエラーとなります。
double da[5] = { 2.09, 2.1, 4.2, 6.3, 5.4, 1.5 };// コンパイルエラー
なお = { データ, データ, データ, データ};の表記は、宣言の時だけ可能で、
これらデータが並ぶ要素の配列を作る指示の表現です。これを実行文で使うことはできなません。
(配列の名前が『先頭要素のアドレス』という変更できないものであるということも一因ですが、
C言語では配列全体を表現できるデータ型が存在しないのです。)
よって、次のような表現はエラーになります。
double da[5] ; da = { 2.09, 2.1, 4.2, 6.3, 5.4, 1.5 };// コンパイルエラー