【課題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]; // 3x4int型の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.初期化子が指定した要素数より大きい場合

 初期化子が指定した要素数より大きい場合はコンパイルエラーとなる.

 

 

戻る