인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

강동훈님의 프로필 이미지
강동훈

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

참조 기초

크기 관련 문의

작성

·

152

0

void Add(short& a)

{

cout<< sizeof(a) <<endl;

a = a + 1;

}

void Add(short* a)

{

cout << sizeof(a) << endl;

*a = *a + 1;

}

int main()

{

short num1 = 10;

Add(&num1);

Add(num1);

cout << num1 << endl;

}

-

32비트 환경이라고 했을 때 주소값은 4바이트를 받는 걸로 알고 있습니다.

포인터의 경우는 주소값을 가지는 자료형이기에 크기가 4바이트가 나오는 것은 이해를 했는데 레퍼런스도 마찬가지로 주소값을 받는다고 했는데 sizeof를 했을 때 주소값의 크기가 아닌 주소가 가지고 있는 값의 크기가 나오는 것에 의문이 있습니다.

레퍼런스의 경우는 주소값을 받아와서 같은 주소값을 공유하는 별도의 객체를 임시로 생성해준다고 생각하면 되는 걸까요?

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

참조형이 '내부적으로' 주소를 받는 것이지만
C++ 관점에서는 '원본 객체의 별칭' 정도로 봐야 하고
주소와 관련된 내용은 숨겨져 있습니다.

따라서 sizeof를 하면 주소가 아닌
해당 객체 자체의 sizeof를 해주기 때문에 저런 결과가 나온 것입니다.
별도의 객체를 임시 생성하는 것은 절대 절대 아닙니다.

강동훈님의 프로필 이미지
강동훈

작성한 질문수

질문하기