본문 바로가기
Programming/C,C++

[C++] #4 참조자(Reference)

by yoiii 2021. 1. 2.

#4 참조자(Reference)


목차

#1 참조자(Reference)의 이해

#2 참조자 선언 규칙


#1 참조자(Reference)의 이해

참조자란 자신이 참조하는 변수를 대신하는 또 하나의 이름, 즉 별칭과도 같다.

int val1 = 2021;
int &val2 = val1;

다음과 같이 선언하면, val1 메모리 공간에, val2 라는 이름(별칭)이 하나 더 붙게 된다.

val2는 val1의 참조자가 되며, 기능과 연산의 결과가 변수와 동일하다. 하지만, C++에서는 참조자와 변수를 구분한다.

 

val2 = 1000

 

다음 문장을 실행하면, val1의 값도 1000으로 초기화된다.

그리고, 참조자는 참조하는 변수와 동일한 메모리 공간을 가리키기에,

 

cout << &val1 << endl;
cout << &val2 << endl;

 

주소를 출력해보면, 완전히 동일한 값을 출력한다.

 

int val1 = 2021;
int &val2 = val1;
int &val3 = val2;

또한, 참조자의 수는 제한이 없으며, 참조자를 대상으로 참조도 가능하다.


#2 참조자 선언 규칙

*참조자를 선언할 때 따라야 하는 몇가지 규칙이 있다.

 

1. 참조자는 변수에 대해서만 참조가 가능하다.

int &ref = 2021; //잘못된코드

 

단, 배열의 요소는 (배열이 아닌, 배열의 요소) 변수로 간주하기에, 참조자의 선언이 가능하다.

 

int arr[5] = {1,2,3,4,5};
int &ref1 = arr[0];
int &ref2 = arr[1];
int &ref3 = arr[2];
int &ref4 = arr[3];
int &ref5 = arr[4];

cout << ref1 << ref2 << ref3 << ref4 << ref5 << endl;

 

물론, 포인터 변수도 참조자의 선언이 가능하다.

 

int val1 = 2021;
int *ptr = &val1; //포인터변수

int &ref = val1; //val1의 참조자
int *(&pref) = ptr; //포인터변수의 참조자

 

2. 참조자는 선언됨과 동시에 누군가를 참조해야 한다.

int &ref; //잘못된코드

 

3. 참조자를 NULL로 초기화 하는것도 불가능하다.

int &ref = NULL //잘못된코드

요약

#1 참조자(Reference)의 이해

참조자란, 자신이 참조하는 변수를 대신하는 또 하나의 이름, 즉 별칭과도 같다.

#2 참조자 선언 규칙

1. 참조자는 변수에 대해서만 참조가 가능하다. (단, 배열의 요소는 변수로 간주하기에 참조자 선언이 가능하다.)

2. 참조자는 선언됨과 동시에 누군가를 참조해야 한다.

3. 참조자를 NULL로 초기화 하는것은 불가능하다.


 

댓글