게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c++ const 참조자 질문
게시물ID : programmer_21042짧은주소 복사하기
작성자 : Utopia
추천 : 0
조회수 : 469회
댓글수 : 4개
등록시간 : 2017/07/17 21:21:03

#include <iostream>

using namespace std;


void print(const int num2)

{

cout << num2 << endl;

}


//내코드

int main(void)

{

const int num = 12;

const int* ptr;

ptr = &num; //const int* ptr = &num과 같음

const int &num2 = *ptr; //이해안됨

print(num2);

return 0;

}


//답안

int main(void)

{

const int num = 12;

const int *ptr = &num;

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의 주소값을 가져오네요..

어떤 구조로 이게 가능한것인가요? 


정답에 있는 주석도 제대로 이해한게 맞는지 궁금합니다.


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호