
우선 다차원 배열을 정의해보면
char str[4][8]={"coffee","tea","water","milk"};
이렇게 됩니다.
그다음에 str속에 있는 주소값은 coffee\0중 c의 주소인것까진 이해가 갑니다. 그런데 그것을 간접참조한 *str의 주소를 출력해보면
printf("%p\n",str);
printf("%p\n",*str);
그러면 둘 다 같은값이 나옵니다.(저의 노트북의 경우는 둘다 0028FEE0이 나옵니다.)
왜 그런가요?
저 문제를 이해해야만 i를 출력할때 printf("%c",*(*(str+3)+1)); 이라고 작성하는 이유를 알 수 있을것같아서.....
답변이 늦었군요... str은 배열의 시작 주소이지요. 다만, 가상의 1차원 포인터 배열이 존재한다고 생각하면 됩니다. 실제로는 포인터 배열이 존재하지 않지만, str 자체가 char* [8]인 2차원 포인터이기 때문에서 가상의 1차원 배열이 각 행을 가르킨다고 생각하면 되겠습니다.