C 言語 | 配列 | 多次元配列
表のように行と列で構成される 2 次元配列を例に、複数の次元で構成される多次元配列の宣言方法を紹介する。
多次元の情報
情報は物理的なメモリー上では一列に配置されるが、論理的にも常に一列であるとは限らない。表のようなデータを管理する場合を考えてみよう。表には行と列があり、横と縦の 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;
}
このプログラムは、各次元に 2 つの要素を持つ 2 次元配列を定義している。この配列は 2 x 2 個の要素、つまり 4 個の int 型変数を格納する領域をメモリー上に確保する。コード 1 から、配列変数 iArray が 4 個の数値を格納していることを確認できる。このプログラムの配列変数 iArray は、論理的には次の構造になっている。
表 1 - 配列 iArray の内容
| [][0] | [][1] | |
|---|---|---|
| [0][] | 10 | 100 |
| [1][] | 1000 | 10000 |
多次元配列は、それほど頻繁に使われるものではない。ほとんどの情報は 1 次元配列で表現できる。しかし、3 次元グラフィックスなどの分野では 4 次元配列が使われる場合もある。次元数が増えると使用するメモリー量も増えるため、適切な範囲で利用する。