多次元配列: 表と行列
表計算ソフトのようなデータ構造。内実は1列に並んでいる。
多次元配列
配列の配列。表や行列、3D空間などを表現する。
行優先 (Row-major)
メモリ上では「行」ごとに並んでいること。
表形式のデータ
画像データ(縦×横)やボードゲームの盤面、行列計算などを扱うために、2次元以上の配列を使います。
C言語では 配列[行][列] のように大括弧を繋げて宣言します。
メモリ上の配置
「2次元」と言いますが、実際のメモリは1本の長いテープです。C言語では
「行を順番に並べる(Row-major)」方式で格納されます。
[0][0], [0][1], ... [1][0]...
の順です。この順番通りにアクセスするとキャッシュ効率が良く、高速に動作します。
2次元配列
// 3行4列の表 (Excelのようなもの)int matrix[3][4] = { {1, 2, 3, 4}, // 0行目 {5, 6, 7, 8}, // 1行目 {9, 10, 11, 12} // 2行目};
// アクセス: matrix[行][列]printf("%d\n", matrix[1][2]); // 7// 多次元配列の走査(二重ループ)// 外側が行(y)、内側が列(x)が基本
for(int i = 0; i < 3; i++) { // y: 行 for(int j = 0; j < 4; j++) { // x: 列 printf("%3d ", matrix[i][j]); } printf("\n");}実践テクニック
ループ順序の重要性
二重ループを書くときは、原則として外側を行(i)、内側を列(j)にします。これはメモリの並び順と同じなので、CPUが効率よくデータを読み込めます。逆(列ループを外)にすると、飛び飛びのアクセスになり遅くなることがあります。
演習課題
課題1: 九九の表
9x9の2次元配列を用意し、九九の結果を代入してから、きれいに表示してください。
合格ライン
2次元配列の宣言と初期化ができる
二重ループで全要素を表示できる