C에서는 변수에 하나의 이름만 할당할수 있다.

int a=10;

이런식으로 밖에 할당할수 었다.

 

그러나 C++에는 변수에 다른 이름을 할당할수 있다.

그 역할을 하는 것이 레퍼런스이다.

int a=10;

int &b=a;

하게 되면

a라는 변수값이 저장된 영역에는 a 말고 b라는 이름이 또 할당된다.

포인터는 메모리를 할당 받지만 b는 메모리를 할당 받지 않는다.

 

선언시에 반드시 초기화되어야 한다.(인수로 사용시 선언 부분에서는 제외)

상수값을 초기화로 사용해서는 않된다.(int &a=10 이런식으로 사용할수 없다)

반드시 변수여야만 한다.

함수의 리턴값을 레퍼런의 초기화할 때도 마찬가지로 적용된다.

 

 

int a 변수 선언

int *a 포인터 변수 선언

int &a 레퍼런스 선언

 

함수의 인수로 레퍼런스를 사용하는 경우는

함수 영역 이외의 값을 변경시킬수 있으므로

Call By Reference로 간주한다.

 

함수의 지역변수를 레퍼런스로 반환하는 경우

호출자에서 이 지역변수를 참조하려 한다면

어떤 값l이 될지는 보장받을수 없다.

이유는 지역변수이기 때문에 호출 끝내는 사라지는

부분이므로 그 영역에 값은 어떤 값이 될지는 보장받을수는 없다.

'C,C++' 카테고리의 다른 글

this 포인터란  (0) 2012.09.07
힙에 메모리 할당.해제  (0) 2012.08.13
메모리  (0) 2012.07.31
const 키워드  (0) 2012.07.31
iostream과 iostream.h  (0) 2012.07.29

+ Recent posts