본문 바로가기

C,C++

Reference

* 이름을 지니는 변수에 대해, 또 다른 이름을 지어주는 것이다.



int a = 4 라고 했을 때, 정수 4가 저장되어 있는 4byte 메모리에는 'a'라는 이름이 붙여진다.


여기서,


int &b = a;


라고 했을 때, a라는 이름의 메모리 공간에, 또 다른 이름 b가 생기는 것이다.


따라서 이 후에


b = 2 처럼 값의 변경을 시도하게 되면, a의 값이 2로 변경된다.

 

 주의 사항)


1. 반드시 선언과 동시에 초기화를 해 주어야 한다.


int &b = a; (o)

int &b;  b = a (x)


2. int & 와 int 는 생성 시 방법만 다를 뿐 생성된 후에는 완전히 같다. 이 뜻은, 반환형을 int로 해주어도 무방하다는 것이다.


3. 지역변수, 동적할당된 변수를 레퍼런스로 리턴하는 것은 위험하다.


 - 지역변수는 그 함수가 끝난 후 소멸되는 변수인데, 이를 레퍼런스로 리턴한다는 것은 사라질 변수에 대해 참조한다는 것


 - 동적 할당된 변수를 레퍼런스로 받아오게 되면, 그 변수를 int형처럼 사용하기 때문에 int*, 즉 포인터의 주소값을 사용할 수 없다.



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

C++ lower_bound, upper_bound  (0) 2018.12.26
콜라한캔 :: 16진수 문자열로 변환  (0) 2018.12.23
void 포인터  (0) 2018.12.12
new, delete  (0) 2018.12.09
inline  (0) 2018.12.09