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 次元配列が使われる場合もある。次元数が増えると使用するメモリー量も増えるため、適切な範囲で利用する。