#include <stdio.h>
#include <stdlib.h>
int main(void){
int A[3][4]={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
int *p = *A;
int **test;
test = &p;
printf("test[0][0]: %d\n",test[0][0]);
printf("test[0][4]: %d\n",test[0][4]);
printf("test[1][4]: %d\n",test[1][4]);
}
여기서 첫번째 printf에서는 a[0][0]인 11을출력하고, 두번째 printf에서는 주소 연산으로 a[1][0]인
21을 출력하는것 까지는 알겠습니다.
test[0][4] = *( *(test + 0) + 4) 이므로 *( &A[0][0] + 4) 이므로 21
그런데 세번째 printf에서는 제 생각으로는 31이 출력되어야 할것 같은데
test[1][4] = *( *(test + 1) + 4) = *( &A[1]+4) = *( &A[1][0] +4) 이므로 A의 1행 0열로부터 4만큼 더한 곳인 31이 출력되어야 하는것 아닌가요?
이상한 값이 출력되네요..