5.3 多次元配列
5.3.1 多次元の情報
情報は、物理的な記憶装置では一列で配置されていますが、論理的(概念的)には常に一列であるとは限りません。例えば、表のようなデータを管理することを考えてください。情報は一列ではありません。表は、行と列を持っています。つまり、縦と横という 2 次元に情報が配置されているのです。
この場合でも、通常の配列で管理することができないわけではありません。しかし、2 次元配列を作成することで、より直観的に表にアクセスすることができるようになるでしょう。配列の要素が配列である配列を、多次元配列と呼びます。多次元配列は以下のように宣言します。
型 変数名 [1次元要素数][2次元要素数]...
このように、多次元配列の宣言には [ ] を次元数だけ記述し、各次元の要素数(サイズ)を指定します。多次元配列変数にアクセスする方法は、1 次元配列と同様に、各次元の添字を指定するだけです。多次元配列の添字式は、最も左から順に評価されます。
実世界では多次元配列型の情報は沢山あります。バスや列車の座席管理や、オセロや将棋などのテーブルゲームの比較的大規模な情報は、このように何らかの形で分類されるため、論理的に分けられた情報を扱うには、多次元配列を使うと便利でしょう。
#include <stdio.h> int main() { int iArray[2][2]; iArray[0][0] = 10; iArray[0][1] = 100; iArray[1][0] = 1000; iArray[1][1] = 10000; printf("0,0 = %d : 0,1 = %d\n" , iArray[0][0] , iArray[0][1]); printf("1,0 = %d : 1,1 = %d\n" , iArray[1][0] , iArray[1][1]); return 0; }
このプログラムは、各次元が 2 つの要素を持つ 2 次元配列を定義しています。 この配列は 2 × 2 個の要素、すなわち 4 つ分の int 型変数を保存する領域をメモリに割り当てます。コード1を見て分かるとおり、確かに iArray 配列変数は 4 つの数値を保存していることが確認できます。このプログラムの iArray 配列変数は、論理的に次のような構造になっています。
[][0] | [][1] | |
---|---|---|
[0][] | 10 | 100 |
[1][] | 1000 | 10000 |
多次元配列は、そう頻繁に使われるものではありません。ほとんどの情報処理は 1 次元配列で実現することができます。しかし、3 次元グラフィックスなどの分野においては 4 次元配列などが用いられることもあります。次元数が多くなれば、当然使用するメモリの容量も増えるため、良識的な範囲でメモリを使うように心がけましょう。