【課題3−1 2次元配列の宣言と初期化】
<多次元配列とは>
2次元以上の配列.1次元配列がベクトルなら2次元配列は行列.
<多次元配列のメモリ上の並び>
例えば2x3の2次元配列も,物理的には6x1の配列としてメモリ上に連続して要素が並んでいる
.
2次元配列
n[0][0] |
n[0][1] |
n[0][2] |
n[1][0] |
n[1][2] |
n[1][2] |
メモリ上では...
n[0][0] |
n[0][1] |
n[0][2] |
n[1][0] |
n[1][1] |
n[1][2] |
<2次元配列の宣言>
基本的には1次元配列と同じだが,行と列の要素数が必要になる.
(構文) 型名 配列名[行の要素数][列の要素数];
(例) int
a[3][4]; // 3x4のint型の2次元配列
<2次元配列の初期化>
1次元配列と同様,初期化子を{}で囲み,先頭から順にカンマで区切って記述する.
(構文) 型名 配列名[要素数][要素数] = {
値1,
値2, 値3, ...
};
1.基本的な書き方
初期化リストを次元に対応させて{}で区切る.
(例1) int
a[2][3] = {{1,2,3},{4,5,6}};
(例2) int
a[2][3] = {
{1,2,3}, // 行と列の対応と明確に...
{4,5,6}
};
2.要素数の省略
先頭の要素数に限り省略できる.
(例) int
a[][3] = {{1,2,3},{4,5,6}}; //
O.K.
int a[2][]
= {{1,2,3},{4,5,6}}; // N.G.
int a[][] =
{{1,2,3},{4,5,6}}; //
N.G.
3.要素数が足りない場合
初期化子の足りない要素は0で初期化される.ただし{}の囲み方によって初期化の仕方が異なる.
(例) int
a[2][3] = {1,2} //
{1,2,0,0,0,0}になる
int a[2][3]
= {{1},{4,5}} // {{1,0,0},{4,5,0}}になる
4.初期化子が指定した要素数より大きい場合
初期化子が指定した要素数より大きい場合はコンパイルエラーとなる.