* 이름을 지니는 변수에 대해, 또 다른 이름을 지어주는 것이다.
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 |