#include <stdio.h>

int main(void) {
    int ar[3][4] = {{2, 4, 6, 8},
                    {1, 3, 5, 7},
                    {10, 11, 12, 13}};

    printf("========== Address and value ==========\n");
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            printf("&ar[%d][%d] = %p, ar[%d][%d] = %d\n", i, j, &ar[i][j], i, j, ar[i][j]);
        }
        printf("\n");
    }

    printf("========== Q1 ==========\n");
    printf("ar = %p\n", ar);
    printf("It's a 2D array pointer.\n\n");

    printf("========== Q2 ==========\n");
    printf("ar + 2 = %p\n", ar + 2);
    printf("It's a 2D array pointer.\n\n");

    printf("========== Q3 ==========\n");
    printf("*(ar + 2) = %p\n", *(ar + 2));
    printf("It's a 1D array pointer.\n\n");

    printf("========== Q4 ==========\n");
    printf("*(ar + 2) + 3 = %p\n", *(ar + 2) + 3);
    printf("It's a 1D array pointer.\n\n");

    printf("========== Q5 ==========\n");
    printf("*(*(ar + 2) + 3) = %d\n", *(*(ar + 2) + 3));
    printf("It's a integer value.\n\n");

    return 0;
}