[개발] 프로그램 지식

[C++] 참조(&)란?

  • -
반응형

C++에서 참조(Reference)는 변수의 별명(Alias)을 제공하는 기능입니다. 참조는 선언된 변수에 대해 다른 이름을 붙이는 역할을 하며, 이를 통해 간접적으로 변수를 접근하거나 수정할 수 있습니다. 참조는 포인터와 유사하지만, 사용법이 더 간단하고 안전합니다.

 

 

 

 

참조의 기본 사용 예제

#include <iostream>

int main() {
    int a = 10;      // 정수 변수 a 선언 및 초기화
    int& ref = a;    // a에 대한 참조 ref 선언

    std::cout << "a: " << a << std::endl;       // a의 값 출력
    std::cout << "ref: " << ref << std::endl;   // ref의 값 출력

    ref = 20;  // ref를 통해 a의 값을 변경
    std::cout << "a: " << a << std::endl;       // a의 값 출력 (20)
    std::cout << "ref: " << ref << std::endl;   // ref의 값 출력 (20)

    return 0;
}
    

이 예제에서:

  • int& ref = a;는 변수 a에 대한 참조 ref를 선언합니다. 이제 refa의 별명이 됩니다.
  • ref를 통해 a의 값을 변경하면 a 자체의 값이 변경됩니다. 이는 refa를 직접 참조하기 때문입니다.

 

 

 

 

 

 

 

참조의 유용한 사용 사례

참조는 다음과 같은 상황에서 유용합니다:

  • 함수 인자로 사용: 참조를 통해 함수 인자에 원본 데이터를 전달할 수 있습니다. 이는 복사본을 생성하지 않으므로 성능이 향상됩니다.
  • 리턴 값으로 사용: 함수가 참조를 리턴하면 함수 외부에서 해당 변수를 직접 수정할 수 있습니다.
  • 복잡한 데이터 구조 조작: 큰 구조체나 클래스 객체를 참조로 전달하여 불필요한 복사를 피할 수 있습니다.

 

 

 

 

 

 

 

함수 인자로 참조 사용 예제

#include <iostream>

void increment(int& value) {
    value++;  // 참조를 통해 원본 변수의 값을 증가시킴
}

int main() {
    int a = 10;
    increment(a);  // a를 참조로 전달
    std::cout << "a: " << a << std::endl;  // a의 값이 증가되어 출력됨 (11)
    return 0;
}
    

이 예제에서:

  • increment 함수는 int& 타입의 참조를 인자로 받습니다.
  • 함수 내에서 참조를 통해 원본 변수 a의 값을 직접 수정합니다.

참조는 포인터와 달리 항상 초기화가 필요하고, null 값을 가질 수 없습니다. 이는 참조가 더 안전하게 사용될 수 있도록 합니다.

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.