WisdomSoft - for your serial experiences.

5.3 多次元配列

表のような行と列からなる2次元の配列を例に、複数の次元からなる多次元配列を宣言する方法を紹介します。

5.3.1 多次元の情報

情報は、物理的な記憶装置では一列で配置されていますが、論理的(概念的)には常に一列であるとは限りません。例えば、表のようなデータを管理することを考えてください。情報は一列ではありません。表は、行と列を持っています。つまり、縦と横という 2 次元に情報が配置されているのです。

この場合でも、通常の配列で管理することができないわけではありません。しかし、2 次元配列を作成することで、より直観的に表にアクセスすることができるようになるでしょう。配列の要素が配列である配列を、多次元配列と呼びます。多次元配列は以下のように宣言します。

多次元配列の宣言
 変数名 [1次元要素数][2次元要素数]...

このように、多次元配列の宣言には [ ] を次元数だけ記述し、各次元の要素数(サイズ)を指定します。多次元配列変数にアクセスする方法は、1 次元配列と同様に、各次元の添字を指定するだけです。多次元配列の添字式は、最も左から順に評価されます。

実世界では多次元配列型の情報は沢山あります。バスや列車の座席管理や、オセロや将棋などのテーブルゲームの比較的大規模な情報は、このように何らかの形で分類されるため、論理的に分けられた情報を扱うには、多次元配列を使うと便利でしょう。

コード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;
}
実行結果
コード1 実行結果

このプログラムは、各次元が 2 つの要素を持つ 2 次元配列を定義しています。 この配列は 2 × 2 個の要素、すなわち 4 つ分の int 型変数を保存する領域をメモリに割り当てます。コード1を見て分かるとおり、確かに iArray 配列変数は 4 つの数値を保存していることが確認できます。このプログラムの iArray 配列変数は、論理的に次のような構造になっています。

表1 iArray 配列の内容
  [][0] [][1]
[0][] 10 100
[1][] 1000 10000

多次元配列は、そう頻繁に使われるものではありません。ほとんどの情報処理は 1 次元配列で実現することができます。しかし、3 次元グラフィックスなどの分野においては 4 次元配列などが用いられることもあります。次元数が多くなれば、当然使用するメモリの容量も増えるため、良識的な範囲でメモリを使うように心がけましょう。