【6日でできるC言語入門】多次元配列

 C言語で多くのデータを扱う場合、1次元配列だけでなく、多次元配列を利用することで複雑なデータの管理や処理が簡単にできます。多次元配列は、2次元配列や3次元配列など、複数の「添え字(インデックス)」を使ってデータを整理できる構造です。表や行列、座標データ、成績表など、縦横(行・列)の形でデータを管理したいときに活躍します。
ここでは基本的な2次元配列を中心に、その使い方や応用例をわかりやすく解説します。

1.2次元配列の基本

1.1. 2次元配列の宣言と使い方

2次元配列は「型 配列名[行数][列数];」の形式で宣言します。
たとえば、3行4列の整数型配列は次のように書きます。

int table[3][4];
項目例意味
int a[3][4];3行4列のint型配列
a[1][2] = 7;2行3列目(0始まり)に代入

1.2. 2次元配列の初期化と活用例

サンプルプログラム1:九九表(2行4列)の作成

プロジェクト/ファイル名: Lesson32_1/main.c

#include <stdio.h>

int main(void) {
    int matrix[2][4] = { {1, 2, 3, 4}, {5, 6, 7, 8} };
    int i, j;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 4; j++) {
            printf("matrix[%d][%d]=%d  ", i, j, matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

matrix[0][0]=1  matrix[0][1]=2  matrix[0][2]=3  matrix[0][3]=4
matrix[1][0]=5  matrix[1][1]=6  matrix[1][2]=7  matrix[1][3]=8

2.2次元配列を使ったデータ処理

2.1. 要素への値の代入と利用

2次元配列はfor文の2重ループを使って全ての要素にアクセスできます。

サンプルプログラム2:各要素に計算した値を格納

プロジェクト/ファイル名: Lesson32_2/main.c

#include <stdio.h>

int main(void) {
    int table[3][4];
    int row, col;
    // 配列に値を代入(行番号+列番号)
    for (row = 0; row < 3; row++) {
        for (col = 0; col < 4; col++) {
            table[row][col] = row + col;
        }
    }
    // 配列内容の表示
    for (row = 0; row < 3; row++) {
        for (col = 0; col < 4; col++) {
            printf("%d ", table[row][col]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

0 1 2 3
1 2 3 4
2 3 4 5

2.2. 添え字(インデックス)に関する注意

  • 2次元配列の行・列どちらも0から開始です。
  • 配列の範囲外にアクセスしないように注意しましょう。
宣言有効な添え字
int a[2][3];a[0][0]~a[1][2]

3.3次元以上の配列

3.1. 3次元配列の例

float data[2][3][4]; // 2×3×4のfloat型配列

3次元配列も同じ要領で管理できます。用途は少ないですが、複雑なデータ構造の管理に利用されます。

まとめ

  • 多次元配列は複雑なデータを行・列・階層でまとめて管理できる。
  • 2次元配列は表や行列データの管理に便利
  • 行・列の添え字の扱いと範囲外アクセスに注意する。
  • 3次元以上も同様に使えるが、管理が複雑になるので注意

多次元配列を使いこなせば、C言語でのデータ処理の幅がさらに広がります!