포인터와 레퍼런스
포인터와 레퍼런스 둘 다 원본 대상을 참조하여 이용한다는 점에서는 같습니다.
- 사용하는 용도에 따라 차이점이 있기 때문에 이 둘이 존재합니다.
포인터와 레퍼런스의 차이점
포인터 | 레퍼런스 | |
선언 방법 | 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의 값으로 변경하는 결과 |
'Programming Language > C, C++' 카테고리의 다른 글
C 데이터, 스택, 힙 영역 (0) | 2014.12.08 |
---|---|
C++ Volatile 키워드 (0) | 2014.11.15 |
C++ malloc/free와 new/delete의 차이점 (0) | 2014.11.12 |
C++ 가상 함수 (virtual) - 가상 함수의 원리 (1) | 2014.11.07 |
C++ 가상 함수 (virtual) - 가상 소멸자 (0) | 2014.11.07 |