C++ 기초 1
[C++] 1-7 참조자(Reference) 사용 이유 및 포인터 차이
hbcho
2023. 11. 14. 07:53
참조자(Reference)
포인터의 일부분을 대신해 주는 것으로 참조자(reference)가 있다. 참조자는 특정 변수를 다른 이름으로 만들거나 함수의 인수를 전달할 때 유용하게 사용된다. 실제로 참조자는 함수와 함께 사용되는 경우가 대부분이다.
참조자 변수는 아래와 같이 참조 연산자인 &를 사용하여 선언한다.
-예시-
데이터형 &참조자 변수 = 변수
참조자 변수는 포인터와 비슷해 보이지만 포인터는 아니다. 포인터는 주소를 가리키지만 참조자 변수는 이미 존재하는 변수와 동일한 데이터 값과 동일한 주소를 갖는다. 따라서 참조자 변수의 데이터형은 대응하는 변수의 데이터형과 동일해야 한다. 그리고 참조자 변수의 값을 변경하면 상응하는 변수의 값도 변한다. 반대인 상황도 마찬가지이다.
참조자 변수를 만드는데 몇 가지 제약이 있다. 다른 참조 변수를 참조할 수 없으며, 참조자 배열과 참조자 포인터를 만들 수 없다. 또한 참조 변수가 함수의 가인수, 반환값, 클래스의 멤버가 아니라면 선언과 동시에 초기화가 되어야 한다.
예제
#include <iostream>
using namespace std;
int main()
{
int Number = 3;
int& rNumber = Number;
cout << "Number=" << Number << endl;
cout << "rNumber=" << rNumber << endl;
rNumber = 4;
cout << "rNumber=" << rNumber << endl;
cout << "Number=" << Number << endl;
return 0;
}
결과
Number=3
rNumber=3
rNumber=4
Number=4
※ 참조자 rNumber는 변수 Number의 별명이라고 생각하면 쉽다. 포인터와 마찬가지로 참조자를 정의하면 해당하는 바이트 크기만큼 메모리 영역이 할당된다.
※ 참조자는 선언과 동시에 초기화가 되어야 한다. 즉, int &rNumber; rNumber=Number;와 같은 방식으로 사용할 수 없다. 단, 참조자가 함수의 가인수로 활용된다면 동시에 초기화할 필요가 없다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13