IT_컴퓨터_코딩_개발

[C++] 포인터와 레퍼런스의 차이(Pointer vs. Reference)

파워유저 2012. 2. 16. 11:23

일단 정의를 해보면
포인터는 다른 변수의 주소(address)를 가지고 있는 변수이고
레퍼런스는 다른 변수와 같은 주소를 가지고 있는 또다른 변수일 뿐이다.

차이점은
포인터는 선언한 후에도 다른 주소를 대입하여 사용할 수 있고
레퍼런스는 선언할 때 정해진 주소를 변경할 수가 없다.


[사용 예]
 int a = 1;
 int b = 2;

 // 1. 선언할 때 아래와 같이 합니다.
 int * ptrA = &a;
 int & refA = a;

 // 2. 포인터는 선언한 이후에 주소를 대입하거나 변경할 수 있다.
 //    레퍼런스는 주소 변경이 안됨.
 int * ptrB;
 ptrB = &b;
 ptrB = &a;
 int & refB = b;

 ++(*ptrA);
 ++(*ptrB);
 ++refA;
 ++refB;

 ptrA = &b;
 refA = b;
 ptrB = &a;
 refB = a;