데이터 분석가 몽구리

[C++] 참조자(Reference)의 이해 본문

C++

[C++] 참조자(Reference)의 이해

데분몽굴 2024. 7. 31. 17:29

참조자(Reference)의 이해

"변수는 할당된 메모리 공간에 붙여진 이름이다. 그 이름을 통해서 해당 메모리 공간에 접근이 가능하다"

int num1 = 2010;

위의 변수 선언을 통해서 2010으로 초기화된 메모리 공간에 num1이라는 이름이 붙게 된다.

int &num2 = num1; // 변수 num1에 대한 참조자 num2를 선언해라!

결과적으로 num1이라 이름 붙어있는 메모리 공간에 num2라는 이름이 하나 더 붙게 된다.

참조자는 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름이다

#include<iostream>


int main(void)
{
    int num1 = 1020;
    int& num2 = num1; // 참조자 num2 선언

    num2 = 3042;
    std::cout << "VAL: " << num1 << std::endl;
    std::cout << "REF: " << num2 << std::endl;

    std::cout << "VAL: " << &num1 << std::endl;
    std::cout << "REF: " << &num2 << std::endl;
    return 0;

}

참조자는 변수를 대상으로만 선언이 가능하다.
하지만 일단 선언이 되고 나면, 변수와 차이가 없다.

참조자는 별칭**

"변수에 별명(별칭)을 하나 붙여주는 것이 참조자이다"

참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언가능

참조자의 수에는 제한이 없다. 즉, 여러 개의 참조자를 선언하는 것도 가능하다.
int num1 = 2759;
int &num2 = num1;
int &num2 = num1;

참조자를 대상으로 또 다른 참조를 만드는 일이 가능하지만, 흔히 필요하지는 않다.

#include<iostream>
using namespace std;

int main(void)
{
    int arr[3] = { 1,3,5 };
    int& ref1 = arr[0];
    int& ref2 = arr[1];
    int& ref3 = arr[2];

    cout << ref1 << endl;
    cout << ref2 << endl;
    cout << ref3 << endl;
    return 0;
}

배열요소는 변수로 간주되어 참조자의 선언이 가능하다. 그리고 포인터 변수도 변수이기 때문에 참조자의 선언이 가능합니다.

'C++' 카테고리의 다른 글

[C++]bool 자료형  (0) 2024.07.31
[C++] 변수, cout, Debug 예제  (0) 2024.04.28
C++ 출력과 데이터의 입력  (0) 2024.04.22