C++ Chapter 6.13 : 참조 변수
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 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]
이런식으로 쓴다. 배열 크기 [] 안에 꼭 써주어야 함!
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기