[圖解C] Example 713: pointer variable of 2-D array

// Example 713: pointer variable of 2-D array

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arr[4][2]={{1,2}, {3, 4}, {11,22}, {33, 44}};
    int i, j;
    int *ptr;
 
    ptr = &arr[0][0];   // arr[n][m]
 
    // printf element value by operating on pointer variable
    for (i=0 ; i<4 ; i++){    
       for (j=0 ; j<2 ; j++){

           // arr[4][2] >> m=2
           // *(ptr+i*m+j) to access the value of arr[i][j]
           // value: 1)variable  2)*pointer
           printf("arr[%d][%d]  = %d \n", i, j, *(ptr+i*2+j));

           // (ptr+i*m+j) to access the address of arr[i][j]
           // address: 1)&variable  2)pointer
           printf("&arr[%d][%d] = %p \n", i, j, (ptr+i*2+j));

           // (ptr+i)+j to access the address of arr[i][j]
           printf("&arr[%d][%d] = %p \n", i, j, &arr[i][j]);
           printf("\n");
       }
    }
    system("pause");
    return 0;
}