레퍼런스(reference)는 변수에 대한 별칭이나 대체 이름이다. 레퍼런스를 사용하면 한 변수를 다른 이름으로 참조할 수 있다. 함수에 대한 인자로 사용할 때 유용하며 이는 값이 아닌 참조에 의한 전달(call by reference)을 통해 변수를 전달할 수 있게 해준다.
레퍼런스는 변수의 메모리 주소를 담지 않고, 참조 대상 변수 자체를 가리킨다. 이를 통해 함수 인자를 넘길 때 값의 복사를 피하거나, 대상 변수를 직접 수정하는 등의 용도로 사용된다.
int x = 10;
int& ref = x;
ref는 x의 레퍼런스이며 x와 ref는 같은 메모리 위치를 공유한다. 따라서 ref를 통해 값을 변경하면 x의 값도 변경된다.
void swap(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int x = 10;
int y = 20;
swap(x, y);
// 출력: x: 20, y: 10
return 0;
}
swap() 위 함수는 참조자를 사용하여 인자로 넘겨진 두 변수의 값을 교환한다.
참조자는 반드시 선언과 동시에 초기화해야 함. 나중에 다른 변수를 참조하도록 변경할 수 없음.
NULL 값을 가진 참조자를 만들 수 없음. 이는 포인터와의 주요한 차이점 중 하나.
. . .