본문 바로가기
C++/C++ 문법

C++ 레퍼런스 변수 (참조 변수)

by Sein_ 2025. 10. 13.
728x90

[Do it C++ 완전정복_ 139~147p]

레퍼런스 변수 (참조 변수)

이미 존재하는 변수에 또 다른 이름(별칭)을 부여

&  위치 의미
변수 선언 시 참조 변수 선언 (int& ref = a;)
값 앞에 주소 연산자 (&a → 변수의 주소 반환)

 

 

레퍼런스 변수 특징

  • 선언 시 반드시 참조할 원본 변수를 초기화해야 한다.
  • 독립적으로 존재할 수 없고, 한 번 참조 후에는 다른 변수를 참조할 수 없다.
  • 상수 참조(const reference) 로 읽기 전용 참조가 가능하다.
int a = 10;
int& ref = a;  // a의 참조(별칭)

ref = 20;      // a도 함께 변경됨
cout << a;     // 20 출력

const int& const_ref = a;  // a의 값은 읽을 수 있으나 변경 불가

 

 

레퍼런스 변수를 이용한 함수 전달

  • 함수에 인자를 전달할 때, 레퍼런스(참조) 를 사용하면 함수 내부에서 원본 값을 변경할 수 있다.
void swapRef(int& a, int& b) {  // 참조로 전달
    int temp = a;
    a = b;
    b = temp;
}

int main() {
    int a = 5, b = 10;
    swapRef(a, b);  // 원본 교환
    cout << "a=" << a << ", b=" << b << endl;  // a=10, b=5
}

좌측 값에 의한 호출(복사본 전달), 우측 참조에 의한 호출(원본 직접 전달)

 

 

레퍼런스와 포인터 차이

  • 레퍼런스의 기능은 포인터로도 할 수 있지만 비교적 안전하게 사용이 가능하다.
  • 포인터처럼 원본 값에 접근할 수 있지만 원본 자체 공간의 크기, 메모리 주소 등은 변경하지 못한다.

(메모리가 누수되지 않도록 안전성을 보장)

'C++ > C++ 문법' 카테고리의 다른 글

C++ 반복문과 제어문  (0) 2025.10.13
C++ 조건문 (if, switch)  (0) 2025.10.13
C++ 함수의 인자 전달 방식 (값, 참조, 주소)  (0) 2025.10.13
C++ 구조체 (struct)  (1) 2025.10.13
C/C++ 메모리 구조  (0) 2025.10.13