C++ Chapter 6.13 : 참조 변수

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


참조 변수 int &

  • 포인터보다 사용하기 편하다.
  • 별명이라고 생각하자.
int value = 5;

int *ptr = &value; // 포인터

int &ref = value; // ❤참조❤

cout << &value << endl; 
cout << &ref << endl;  
cout << ptr << endl;
// 출력되는 값이 모두 같다.

포인터 : int *ptr = &value;

  • 포인터 ptr이 value 변수의 주소 값을 가짐

참조 : int & ref = value;

  • 참조 변수 ref는 value 변수의 또 다른 별명이 된다.
  • ref는 이제 value가 잡고 있는 메모리를 같이 사용한다.
    • &ref = value`
  • 이제 ref = 10 하면 value도 10으로 바뀐다.

참조 변수는 반드시 선언과 동시에 별명이 될 변수로 초기화가 필요되야 한다

  • 어떤 변수의 별명이 될지 정해주어야 함.
    int & ref; // ❌ 초기화를 해주어야 한다.
    int & ref = 123; // ❌ 변수로 초기화가 되어야한다. 별명이 될 변수.
    
    const int x = 9;
    int & ref = x; // ❌ x는 const 상수이므로 ref가 x의 값을 바꿀 우려가 있어 상수를 참조하는건 금지됨.
    const int & ref = x; // ⭕ ref도 값을 못바꾸게 const로 설정해버리면 상수인 x를 참조할 수 있다.
    
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    int a = 1;
    int b = 9;
    
    int & ref = a;  // ref는 a의 별명이 된다.
    cout << ref << endl; // 1 출력
    
    ref = b;  // ref는 이제 b의 별명이 된다. 
    cout << ref << endl; // 9 출력
}


참조에 의한 인수 전달

void doSomething(int &n)
{
    n = 10;
    cout << "In doSomething " << n << endl;
}
int main()
{
    int n = 5;
    doSomething(n); // n이 10으로 바뀐다

    cout << n << endl; // 10 출력
}

n을 doSomething의 매개변수 int & n 에 넘긴다. 이제 doSomething의 매개변수 n은 main의 n의 별명이 된다. 따라서 doSomething의 매개변수 타입이 int & 이 아닌 그냥 int 였다면 doSomething 안에서 n = 10 해주어도 main의 n엔 변화가 없지만 참조중이기 때문에 main의 n도 10으로 값이 바뀐다.


배열 참조

int arr [] = {1, 2, 3, 4, 5};
int (&arr)[5] = arr;

배열을 참조하는 변수는 int (&arr)[5] 이런식으로 쓴다. 배열 크기 [] 안에 꼭 써주어야 함!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기