Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

게임 개발 메모장

[ C++ ] 포인터와 레퍼런스의 차이 본문

언리얼 엔진/C++

[ C++ ] 포인터와 레퍼런스의 차이

Dev_Moses 2023. 12. 17. 21:35

포인터란?

 

포인터는 메모리의 주소를 가지고 있는 변수이다.

주소 값을 통한 메모리 접근을 한다. ( 간접 참조 )

 


레퍼런스란?

 

레퍼런스 = 참조자 ( C++ 문법 )

참조자는 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름이다.

즉, 변수에 별명(별칭)을 하나 붙여주는 것이다.

변수 명을 통해서 메모리를 참조한다. ( 직접 참조 )

 

Num이 변수의 이름이면, Ref는 Num의 별명이라는 뜻이다.

Num과 Ref는 동일한 메모리 공간을 참조한다.

 

 

 

 


포인터와 레퍼런스의 차이

 

1. NULL 초기화

 

포인터는 NULL 초기화를 할 수 있지만, 레퍼런스는 NULL 초기화를 할 수 없다.

레퍼런스는 반드시 선언과 동시에 초기화를 해야한다.

이러한 특성때문에, 포인터는 가리킬 대상을 변경할 수 있지만 레퍼런스는 불가능하다.

 

2. 메모리 공간의 소모

 

포인터는 주소값을 저장하기 위해 별도의 메모리 공간을 소모한다.

반면, 레퍼런스는 같은 메모리 공간을 참조하므로 메모리 공간을 소모하지 않는다.

 

 

3. Call by Pointer  / Call by Reference

 

포인터인 경우

매개변수로 함수 인자 전달 시, 메모리 소모가 일어나고 값 복사가 발생된다.

 

레퍼런스인 경우

메모리 소모가 없고, 값 복사 또한 발생하지 않는다.

 

 

'언리얼 엔진 > C++' 카테고리의 다른 글

[ C++ ] 가상 함수와 가상 함수 테이블  (0) 2023.12.24
[ C++ ] 가변 인자 템플릿  (0) 2023.12.23
[ C++ ] 깊은 복사, 얕은 복사  (0) 2023.12.09
[ C++ ] 메모리 할당  (0) 2023.12.06
[ C ++ ] Lambda 정리  (0) 2023.12.04