게임 개발 메모장
[ C++ ] 포인터와 레퍼런스의 차이 본문
포인터란?
포인터는 메모리의 주소를 가지고 있는 변수이다.
주소 값을 통한 메모리 접근을 한다. ( 간접 참조 )
레퍼런스란?
레퍼런스 = 참조자 ( 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 |