#include <stdio.h>
#include <conio.h>
int main()
{
int a[3][5] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
printf("%d", (a + 1));
printf("\n%d", *(a + 1));
_getch();
}
위 코드에서 첫번째 printf의 결과와 두번째printf의 결과가 같게 나오는데,
왜 같게 나오는지 이해가 안되네요.
*(a + 1)의 의미는 "포인터 (a + 1)이 가리키고 있는 번지에 들어있는 값을 읽어라." 인데
그 결과(번지에 들어있는 값을 읽은 결과)가 a[1]의 번지값이었습니다.
즉 포인터 (a + 1)이 가리키고 있는 번지에 들어있는 값은 a[1]의 번지값이다.
다시 말해 (a + 1)는 'a[1]의 번지값을 가지고 있는 무언가'의 번지값을 가지고 있다는 뜻인데....
말이 안되지 않나요? a의 번지에 +1을 했다는 것은 a의 번지에 4*5바이트 만큼 갔다는 뜻인데,
거기에 있는게 'a[1]의 번지값을 가지고 있는 무언가'의 번지값이라뇨.
제가 분명히 뭔가를 잘못 이해하고 있는 것 같은데, 블로그를 읽어봐도 알수가 없네요.
(문장을 헷갈리게 써서 죄송합니다. 근데 제 의문을 표현하려면 어쩔 수 없는 것 같네요.)