#include <iostream>
using namespace std;
void print(const int num2)
{
cout << num2 << endl;
}
//내코드
int main(void)
{
const int num = 12;
const int* ptr;
ptr = # //const int* ptr = &num과 같음
const int &num2 = *ptr; //이해안됨
print(num2);
return 0;
}
//답안
int main(void)
{
const int num = 12;
const int *ptr = #
const int *(&ref) = ptr; //&ref주소에 포인터를 할당해서 ptr이 가르키는 주소를 가르킨다.?
//ptr의 주소를 참조자(&ref)의 포인터변수에 던진다?
cout << *ptr << endl;
cout << *ref << endl;
return 0;
}
내코드의
const int &num2 = *ptr;
디버깅으로 계속돌려봤는데 이해가안되는게요
*ptr이 의미하는것이 ptr이 num의 주소를 가르키고있고,
*ptr은 그 주소의 있는 변수값인 12가 되잖아요..
그러면 const int &num2 = 12 가 되지않나요?
컴파일러가 어떻게 생각하는지 모르겠는데 &num2가 ptr의 주소값을 가져오네요..
어떤 구조로 이게 가능한것인가요?
정답에 있는 주석도 제대로 이해한게 맞는지 궁금합니다.