[C言語] Cパズルブック 6.3 多次元配列

『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, macOS Ventura 13.3.1, clang 14.0.3]

問6.3のコードと出力は以下の通りです。

取り立てて難しいところはありませんでした。LLDBデバッガで2次元配列、1次元配列のメモリ格納値を確認しました。

#include "defs.h"

int a[3][3] = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}};
int *pa[3] = {
            a[0], a[1], a[2]};
int *p = a[0];

int main() {
    int i;
    for(i = 0; i < 3; i++){
        PRINT3(d, a[i][2-i], *a[i], *(*(a+i)+i));
    }
    NL;
    
    for(i = 0; i < 3; i++){
        PRINT2(d, *pa[i], p[i]);
    }

    return 0;
}
value = 3	value = 1	value = 1	
value = 5	value = 4	value = 5	
value = 7	value = 7	value = 9	

value = 1	value = 1	
value = 4	value = 2	
value = 7	value = 3
ピンクは整数の2次元配列
緑は各1次元配列の先頭を示すポインタの配列
青は2次元配列の先頭を示すポインタ