二次元(多次元)配列のポインタの書き方

C言語で二次元配列を関数に渡して、関数内でも二次元配列としてアクセスしたくなったので、やり方を調べてみました。

二次元配列のポインタは

(*p)[]

でOKです。

サンプルコードをどうぞ

void hoge(int (*p)[3])
{
    printf("%d, %d, %d\n", p[0][0], p[0][1], p[0][2]);
    printf("%d, %d, %d\n", p[1][0], p[1][1], p[1][2]);
}

int main(void)
{
    int a[2][3] = {
        { 1, 2, 3 },
        { 4, 5, 6 },
    };

    int (*p)[3] = a;
    printf("%d, %d, %d\n", p[0][0], p[0][1], p[0][2]);
    printf("%d, %d, %d\n", p[1][0], p[1][1], p[1][2]);

    hoge(a);

    return 0;
}