본문 바로가기

C++

[C++] 참조자(Reference)

참조자(Reference)란?

변수에 또 하나의 다른 이름(별칭)을 붙이는 것이다.


int num1 = 2019;
int &num2 = num1;

이렇게 선언하게 되면, num1의 메모리 공간에 num2라는 이름이 하나 더 붙게 된다.

여기서 num2는 선언되고 나면 변수 num1과 다를 바 없이 같은 기능을 한다.

하지만 이미 선언된 변수를 대상으로 만들어진 것이므로 변수가 아닌 참조자라고 정의한다.



연산자 &

연산자 &는 변수의 주소 값을 반환하는 연산자이다.

하지만 위의 예제와 같이 새로 선언하는 변수(num2) 앞에 붙게 되면 참조자의 선언을 뜻한다.



참조자 선언

참조자는 기존 변수에 별칭을 만들어 주는 것이라고 했다.

따라서 아래와 같이 참조자를 선언하는 것은 불가능하다.


(X)

int &ref = 20;

int &ref;

int &ref = NULL;



포인터 변수의 참조자 선언

포인터 변수도 변수이기 때문에 참조자의 선언이 가능하다.

#include <iostream>

using namespace std;

int main() {
	int num = 10;
	int *ptr = &num;
	int **dptr = &ptr;

	int &ref = num;
	int *(&pref) = ptr;
	int **(&dpref) = dptr;

	cout << ref << endl;
	cout << *pref << endl;
	cout << **dpref << endl;

	return 0;
}


참조자를 선언하기 전까지는 아래와 같이 할당된다.


여기에서 참조자를 선언하게 되면, 각각에 별칭이 붙는다.


따라서 출력 결과는 num의 값인 10으로 모두 출력된다.




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

[C++] new & delete  (0) 2019.03.08
[C++] 참조자(Reference)와 함수  (0) 2019.03.05
[C++] 기본 자료형  (0) 2019.03.05
[C++] 인라인(inline) 함수  (0) 2019.03.04
[C++] 매개변수 디폴트 값  (0) 2019.03.04