CS Study/C++

[C++] [8] 레퍼런스 변수(reference variable)

23학번이수현 2024. 12. 20. 04:39

0. 왜 레퍼런스 변수가 필요할까?

#include <iostream>

void updateValue(int *ptr){
    *ptr = 42;
}

int main(){
    int x = 10;
    updateValue(&x);
    return 0;
}

 

- 이런 복잡한 포인터 문법 없이 더 직관적으로 값을 수정하는 방법이 있다.

- 그것을 레퍼런스 변수라고 한다.

 

1. 레퍼런스 변수란?

- 레퍼런스 변수는 기존 변수를 별칭(alias)처럼 참조하는 변수이다.

int x = 10;
int &ref = x;
ref = 20;
std::cout << x;

 

1.1. 포인터와 차이점

포인터 레퍼런스 변수
별도로 메모리를 차지함 메모리 공간 차지하지 않음
*를 사용해 간접 참조 바로 값을 사용 가능
초기화 후 다른 변수 참조 가능 초기화 시 한 번만 변수 참조 가능

 

2. 레퍼런스 변수의 주요 특징

2.1. 선언과 초기화 :

- 반드시 선언과 동시에 초기화해야 함.

- int &r; //컴파일 오류

 

2.2. 불변성:

- 선언된 이후 다른 변수를 참조할 수 없음

 

2.3. 편리성:

- 포인터처럼 * 연사자를 사용하지 않아도 변수처럼 사용 가능.

 

3. 레퍼런스 변수의 사용 사례

3.1. 함수 매개변수로 사용:

void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

 

3.2. 함수 리턴 값으로 사용:

int &getElement(int arr[], int index) {
    return arr[index];
}

 

4. 결론

- 레퍼런스 변수는 코드의 간결성과 가독성을 높이고, 효율적인 메모리 사용을 가능하게 함