[圖解C] Example 711: operation of 2-dimension array

// Example 711: operation of 2-dimension array
// (pointer constant) 把「陣列名稱」當作「指標常數」來運作
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int array[][4] = {1, 2, 3, 4, 11, 12, 13, 14};
    int i, j;
 
    // *(array+i)+j     to access the "address" of array[i][j]
    // *(*(array+i)+j)  to access the "value"   of array[i][j]
    for(i=0 ; i<2 ; i++){
       for(j=0; j<4 ; j++){
          printf("array[%d][%d]     = (%%d) %d\t\t", i, j, array[i][j]);
          printf("array[%d][%d]     = (%%p) %p\n", i, j, array[i][j]);
          printf("&array[%d][%d]    = (%%d) %d\t\t", i, j, &array[i][j]);
          printf("&array[%d][%d]    = (%%p) %p\n", i, j, &array[i][j]);
       
          // address
          printf("*(array+%d)+%d    = (%%d) %d\t\t",i, j, *(array+i)+j);
          printf("*(array+%d)+%d    = (%%p) %p\n",i, j, *(array+i)+j);
       
          // value
          printf("*(*(array+%d)+%d) = (%%d) %d\t\t",i, j, *(*(array+i)+j));
          printf("*(*(array+%d)+%d) = (%%p) %p\n",i, j, *(*(array+i)+j));
          printf("---------------------------------\n");
       }
    }
 
    system("pause");
    return 0;
}