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

 C言語の2次元配列は、行列や表のような「縦×横」のデータ構造をまとめて扱いたいときに非常に便利です。1次元配列が「横に並んだ箱」であるのに対し、2次元配列は「縦横に並んだ箱(マス目)」として複数データを管理できます。たとえば座席表、成績表、画像データ、碁盤の状態など、あらゆる「行×列」のデータを簡単に操作できます。
ここでは2次元配列の使い方や初期化、注意点、サンプルプログラムを詳しく解説します。

1.2次元配列の基本

1.1. 2次元配列の宣言と利用

2次元配列は「型 配列名[行数][列数];」の形式で宣言します。

int a[3][4]; // 3行4列の配列
列0列1列2列3
0a[0][0]a[0][1]a[0][2]a[0][3]
1a[1][0]a[1][1]a[1][2]a[1][3]
2a[2][0]a[2][1]a[2][2]a[2][3]

添え字は[行][列]の順です。
たとえば a[1][2] は「2行3列目」の値を意味します(0始まり)。

サンプルプログラム1:要素へ値を代入し表示

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

#include <stdio.h>

int main(void) {
    int table[2][3];
    int i, j;
    // 2次元配列の各要素に i+j を代入
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            table[i][j] = i + j;
        }
    }
    // 配列の内容を表示
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            printf("table[%d][%d]=%d ", i, j, table[i][j]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

table[0][0]=0 table[0][1]=1 table[0][2]=2 
table[1][0]=1 table[1][1]=2 table[1][2]=3 

1.2. 2次元配列の初期化

2次元配列は宣言と同時にまとめて初期化もできます。

int seat[2][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8}
};
列0列1列2列3
01234
15678

2.2次元配列の活用と注意点

2.1. 2次元配列のサイズと添え字

  • 行数・列数は必ず正しく指定しましょう。
  • 添え字は0から始まり、[行数-1][列数-1]までです。
宣言例有効な添え字範囲
int a[3][4];a[0][0]~a[2][3]

2.2. 2次元配列の初期化パターン

  • 行・列どちらも指定(OK): int n[2][3];
  • 行は省略NG、列だけ省略OK: int n[][3] = {...};
  • 両方省略NG: int n[][];(エラー)

3.応用例と練習

3.1. サンプル:表データの表示

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

#include <stdio.h>
int main(void) {
    int score[3][2] = { {70, 80}, {65, 90}, {88, 75} };
    int i, j;
    for (i = 0; i < 3; i++) {
        printf("%d行目: ", i+1);
        for (j = 0; j < 2; j++) {
            printf("%d点 ", score[i][j]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

1行目: 70点 80点
2行目: 65点 90点
3行目: 88点 75点

まとめ

  • 2次元配列は「表・行列・座席表」などのデータを効率よく管理できる。
  • 宣言は「型 配列名[行数][列数];」で行う。
  • 添え字は**[行][列]**、どちらも0から始まる。
  • 初期化やfor文の2重ループと組み合わせて使いこなそう。

2次元配列を使いこなせば、C言語でのデータ処理の幅がぐんと広がります!