레퍼런스 자료형
-> C++부터 등장한 자료형
-> 원본 데이터에 접근하는 두 번째 방법이다.
-> 첫 번째 방법으로는 포인터를 통한 간접 참조를 이용하고,
-> 두 번째 방법으로는 레퍼런스를 통한 직접 참조를 이용한다.
레퍼런스의 형태
레퍼런스로 한번 참조한 메모리는 변경이 불가능하다.
-> 선언과 동시에 초기화를 진행해야만 한다.
자료형& 변수명
int a = 10;
int& r = a;
레퍼런스를 이용한 swap
void Swap(int& _a, int& _b)
{
int itemp = 0;
itemp = _a;
_a = _b;
_b = itemp;
}
void main()
{
int a = 10, b = 20;
Swap(a, b);
cout << a << " , " << b << endl;
}
const와 레퍼런스
-> 컴퓨터가 변수를 다룰 때는 단순히 자료형만 보고 판단한다.
const int a = 10;
const int a = 10;
int& r = a;
r의 자료형은 일반 레퍼런스이다.
-> r을 통해서 값 변경을 한다.
-> 하지만, 참조하고 있는 공간은 값 변경이 불가능한 const 변수이다.
int& r = 20; // 불가능
20은 리터럴 상수이므로 임시 메모리 영역이 등록이 된다.
(코드라인을 벗어나면 소멸하는 공간)
문법 이론상 성립하지 않는다.
하지만, C++에서는 성립할 수 있도록 "임시 변수"를 생성해준다.
임시 변수란 "이름 없이 메모리 공간에 등록되는 변수"이다.
const int& r = 20; // 가능
이것을 통해서 값 변경을 시도해보자.
void Add(const int& _a, const int& _b)
{
int iRes = _a + _b;
cout << iRes << endl;
}
void main()
{
Add(10, 20);
}
레퍼런스의 크기
-> 레퍼런스 변수를 만들기 위해 공간을 할당하지 않는다.
-> 즉, 레퍼런스의 크기는 존재하지 않는다.
'Programming > C++ Basic' 카테고리의 다른 글
C++ Debug, 조건식 Debug (0) | 2020.09.08 |
---|---|
C++ string (0) | 2020.09.08 |
C++ 파일 분할(.cpp, .h) (0) | 2020.09.08 |
C++ 조건부 컴파일(#if, #ifdef, #ifndef 등) (0) | 2020.09.07 |
C++ 매크로(#define) (0) | 2020.09.07 |