Programming Language/C, C++

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

MOLOKINI 2014. 11. 12. 12:10

포인터와 레퍼런스

포인터와 레퍼런스 둘 다 원본 대상을 참조하여 이용한다는 점에서는 같습니다.

- 사용하는 용도에 따라 차이점이 있기 때문에 이 둘이 존재합니다.

 

 

포인터와 레퍼런스의 차이점

 

  포인터 레퍼런스
 선언 방법  int *pData;  int &rData; 
 NULL 값  NULL 허용
 int *pData = NULL;   // 실행가능
 - 참조 대상을 아무때나 참조 가능
 NULL 불가
 int &rData = NULL;  // 컴파일 에러
 int &rData = num; 
 - 이런식으로 선언과 동시에 초기화를 해주어야 한다.
 초기화 시  string name("Hyeven");
 string *pData = &name;
 - name의 주소값을 대입합니다.
 string name("Hyeven");
 string &rData = name;
 - name의 실제 값을 대입합니다.
 대상 변경  가리키는 대상을 변경할 수 있음
 string name("Hyeven");
 string sname("wonjayk");
 string *pData = &name;
 *pData = &sname;
 - pData가 name을 가리키지 않고 sname을 가리키게 됨
 - 값이 변경되는 것이 아님
 가리키는 대상을 변경할 수 없음, 값을 변경
 string name("Hyeven");
 string sname("wonjayk");
 string &rData = name;
 rData = sname;
 - name의 값을 sname의 값으로 변경하는 결과