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

1.2次元配列の基本
1.1. 2次元配列の宣言と利用
2次元配列は「型 配列名[行数][列数];」の形式で宣言します。
int a[3][4]; // 3行4列の配列| 行 | 列0 | 列1 | 列2 | 列3 |
|---|---|---|---|---|
| 0 | a[0][0] | a[0][1] | a[0][2] | a[0][3] |
| 1 | a[1][0] | a[1][1] | a[1][2] | a[1][3] |
| 2 | a[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 |
|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 |
| 1 | 5 | 6 | 7 | 8 |
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言語でのデータ処理の幅がぐんと広がります!
