포인터와 레퍼런스

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

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



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


 

포인터

레퍼런스

 선언 방법

 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의 값으로 변경하는 결과



Posted by 긍정왕오킹