참조자
참조자(Reference)란 할당된 하나의 메모리 공간(변수)에 둘 이상의 이름을 부여할 경우 이를 참조자라고 한다.
참조자를 선언하는 방법은 다음과 같다
int num1=2023
int &num2=num1;
먼저 num1이라는 변수를 선언한 후 할당된 메모리 공간에 2023이 저장되어 있다. 그다음 두 번째 줄 int &num2=num1; 이 참조자를 선언하는 코드이다. 참조자를 선언하게 되면 2023이 저장되어 있는 할당된 메모리공간의 이름이 num2가 추가된다.
참조자의 수에는 제한이 없으며 참조자를 대상으로도 참조자를 선언할 수 있다. 또한 참조자는 변수에 대해서만 선언이 가능하고, 선언됨과 동시에 누군가를 참조해야만 한다.
int num1=2023;
int &num2=num1; //참조자를 선언한 후 바로 num1을 참조했다.
int &num3=num1; //참조자를 선언한 후 바로 num2을 참조했다.
int &num4=num1; //참조자를 선언한 후 바로 num3을 참조했다.
배열에서의 참조자 선언도 가능하다.
#include <iostream>
using namespace std;
int main(void){
int arr[3]={1,3,5};
int &ref1=arr[0];
int &ref2=arr[1];
int &ref3=arr[2];
cout<<ref1<<endl;
cout<<ref2<<endl;
cout<<ref3<<endl;
return 0;
}
결과
1
3
5
여기서 참조자 선언과 포인터 변수 선언과 혼동이 생길 수 있어 잠깐 살펴보겠다.
int *ptr=&num1; //변수 num1의 주소 값을 반환해서 포인터 ptr에 저장해라
int &num2=num1; //변수 num1에 대한 참조자 num2를 선언해라
첫 번째 줄은 포인터 num1의 주소값을 포인터 ptr에 저장한 것이고
두 번째 줄은 변수 num1에 대한 참조자 num2를 선언한 것이다. 둘을 잘 구분해야 할 필요가 있다.
할당된 메모리 공간인 변수에 두 개 이상의 이름을 붙여줄 경우(별명) 이것을 참조자(Reference)라 하며 두 개 이상의 참조자를 붙일 수 있고 선언됨과 동시에 누군가를 참조해야만 한다.
'c++' 카테고리의 다른 글
[C++]동적 메모리 할당 및 반환(new, delete ) (0) | 2023.01.30 |
---|---|
[C++]반환형이 참조형(Reference Type)인 경우 (0) | 2023.01.29 |
[C++]Call-by-value & Call-by-reference (참조자와 함수) (0) | 2023.01.26 |
[C++]자료형 bool (2) | 2023.01.23 |
[C++]함수의 오버로딩 (2) | 2023.01.21 |