포인터는 그 포인터가 가리키는 대상을 변경 가능합니다.
그 대상의 물리적 위치 정보(시작 주소)를 저장하고 있으니까....
레퍼런스는 가리키는 대상을 변경할 수 없습니다.
레퍼런스의 대상 변수가 어느것인가가 정해지는 것은 레퍼런스가 초기화(정의와 동시에 초기화)될 때 뿐이죠.
하지만 레퍼런스는 대상을 변경할 수 없는 대신에 역참조 연산자를 안붙이고 원래의 변수처럼 사용할 수 있습니다. 기능이 제한된 아주 특수한 형태의 포인터라고 해도 됩니다.
(이게 레퍼런스의 용도라고 할 수 있죠. 사실상 참조에 의한 호출을 위해서만 사용합니다.)
C++에서 레퍼런스가 생겼어도 포인터는 여전히 그 유용성을 갖고 있죠.
어느 한 변수 이름이 가리키는 대상을 제어의 조건에 따라 간단히 변경할 수 있다는 것은 대단히 매력적인 일입니다. 또한 배열을 넘겨줄 때도 포인터가 유용합니다.
(참조에 의한 호출 용도는 레퍼런스에게 뺏겼습니다. 포인터는 역참조연산자가 필요해서 불편하거든요.)
'Programming > C & C++' 카테고리의 다른 글
Unix / Linux 에서 현재시간 측정하기 (0) | 2008.01.16 |
---|---|
난수 (Random) 함수 (0) | 2008.01.02 |
struct 와 typedef struct 의 차이점 (18) | 2008.01.02 |
동적 할당 (0) | 2008.01.02 |
에러시 메모리 값의 의미 (0) | 2008.01.02 |
댓글