참조(reference)와 포인터(pointer) 【 C/C++ 】

참조는 변수에 대한 또 다른 별칭 이다. 참조는 포인터가 아니며 포인터 처럼 동작하지도 않는다.

1. 참조화 포인터는 3가지 큰 차이점이다.

-참조는 null 참조가 없다.
-참조는 생성 당시 초기화가 필요하다.
-참조는 항상 초기화된 객체를 참조한다.

2. 참조는 리터럴이나 임시값을 초기화 할 수 없다. 단  const를 사용하면 가능하다.

float  &rValue = 3.23; // 오류
const float  &rValue = 3.23; // 가능

swap(T& a, T& b); 
swap(std::string("a"), std::string("b")); // 오류

swap(const T& a, const T& b);
swap(std::string("a"), std::string("b")); // 가능

const 값으로 참조를 초기화한 경우 임시 값은 참조가 그 값을 참조하는 한 계속 존재하게 된다.

3. 참조는 초기화될 때 참조했던 그 객체만 참조한다. 반면 포인터는 주소를 저장하기 때문에 얼마든지 객체를 변경할 수 있다. 즉 객체의 변경이 필요없는 경우는 참조를, 객체를 변경해야 하는 경우에는 포인터를 사용해야 한다.

4. 대입 연산자의 경우 vec[1] = 10; 이라 사용하면 큰 무리가 없지만 *vec[1] = 10이라 표기하면 조금 어색하기 때문에 이럴 경우 참조를 사용한다.




덧글

댓글 입력 영역