本文へスキップ
BecomeCoder

C言語コース · 第5章 配列と文字列 · レッスン19

多次元配列 ― 表のようなデータ

ブラウザで完結

導入

行と列のある「表」のようなデータは、2次元配列で表せます。座席表や盤面などに使います。

説明

型 名前[行][列] で宣言します。名前[行][列] でアクセスします。行と列のマス目(表)をイメージしてください。

flowchart TB
  subgraph T["int table[2][3](2行3列)"]
    direction TB
    r0["[0][0]=1 | [0][1]=2 | [0][2]=3"]
    r1["[1][0]=4 | [1][1]=5 | [1][2]=6"]
  end
#include <stdio.h>

int main(void) {
    int table[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    printf("%d\n", table[0][2]);   // 3(0行目・2列目)
    printf("%d\n", table[1][0]);   // 4(1行目・0列目)
    return 0;
}

二重の for で全要素を回れます。外側が行、内側が列に対応します。

#include <stdio.h>

int main(void) {
    int m[2][2] = {{1, 2}, {3, 4}};
    for (int r = 0; r < 2; r++) {
        for (int c = 0; c < 2; c++) {
            printf("%d ", m[r][c]);
        }
        printf("\n");
    }
    return 0;
}

やってみよう

table の値を書き換えたり、二重ループで表全体を表示したりして、行と列の対応を確かめましょう。

演習

2次元配列 int m[2][2] = {{1, 2}, {3, 4}};4要素すべての合計を二重ループで求めて表示してください(結果は 10)。

ヒント1を見る

int total = 0; から始め、二重 for の中で total += m[r][c];

実際に動かしてみよう

下のエディタにCを書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(scanf を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。