반응형
포인터(Pointer)는 메모리의 주소를 저장하는 변수로 간접참조를 한다.
레퍼런스(Reference)는 참조대상을 그래도 할당받아 해당 변수를 대신할 수 있다.[별칭]
둘의 차이점을 4가지로 나누어 보려고 한다.
1. NULL 허용 여부
- 포인터는 NULL 값을 할당 받을 수 있기 때문에 사용할때 항상 NULL값 체크를 해주는것이 좋다.
- 레퍼런스는 선언과 동시에 초기화하지 않으면 컴파일 오류가 발생함으로 NULL값을 할당 받을 수 없다.
2. 참조 대상 할당
- 포인터는 참조 대상의 주소값을 할당 받는다.
- 레퍼런스는 참조 대상 그대로를 할당 받는다.
int a =10;
int* p = &a;
int &r = a;
3. 접근 방법
- 포인터는 "*, ->" 등 포인터 연산자를 사용하여 접근해야한다.
- 레퍼런스는 일반 변수처럼 접근할 수 있다.
- 레퍼런스의 값을 변경하면 레퍼런스가 참조하고 있는 실제 변수의 값이 변경된다.
4. 메모리 공간 소모
- 포인터는 주소값을 저장하기 위해 별도의 메모리 공간을 소모한다.
- 레퍼런스는 할당받은 값과 같은 메모리공간을 참조하기 때문에 별도의 메모리 공간을 소모하지 않는다.
반응형
'C++' 카테고리의 다른 글
[c++] STL Container의 종류 (0) | 2021.08.18 |
---|---|
[c++] STL 이란? (0) | 2021.08.18 |
[c++] 스택(Stack)과 힙(Heap) (0) | 2021.08.16 |
[c++]게임 인벤토리 (0) | 2020.04.02 |
[c++]파일 로딩 프로그램 (0) | 2020.04.02 |