포인터변수 pt가 있을때,
&pt -> 해당 포인터 변수의 주소값을 가르킨다.
*pt -> 해당 포인터 변수가 가르키는 주소값의 실제값을 가져온다.
*&pt -> 해당 포인터 변수의 주소값이 가르키는 주소값의 실제값을 가져온다.
이렇게 보면 좀 어려운데, 일단 실행결과를 보면 *&pt는 포인터 변수가 가르키는 변수 주소값을 나타낸다.
#include <iostream>
int main() {
std::cout << "Hello World!\n";
int n = 4;
int* pt = NULL;
pt = &n;
printf("%d\n", &n);
printf("%d\n", *pt);
printf("%d\n", *&pt);
printf("%d\n", n);
printf("%d\n", &n);
}
이론적으로는 이해가 좀 힘든데, 일단 *&pt는 포인터 변수가 가르키는 변수의 주소값이라는 사실을 기억하는게 좋을 것 같다.
이는 결국 포인터 변수 주소값이 가르키는 값은 변수의 주소값이란 소리인데, 포인터 변수 주소값이 가르키는 곳은 포인터 변수가 가르키는 곳과 동일하다는 의미라 봐도 될 것 같다.
*& 키워드 관련 - https://stackoverflow.com/questions/34505788/what-does-mean-in-c