본문 바로가기
C++

[c++] 포인터와 레퍼런스

by 코모's 2021. 8. 9.
반응형

포인터(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