-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathreference.cpp
More file actions
52 lines (41 loc) · 2.17 KB
/
Copy pathreference.cpp
File metadata and controls
52 lines (41 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//############################################################
// | cafe | http://cafe.naver.com/dremdelover |
// | Q&A | https://open.kakao.com/o/gX0WnTCf |
// | business | ultrasuperrok@gmail.com |
//############################################################
#include <iostream>
using namespace std;
int main() {
/*
레퍼런스(Reference)란?
- 레퍼런스는 변수의 별명으로 생각할 수 있습니다.
- 레퍼런스는 원래의 변수와 동일한 메모리 주소를 공유하며, 레퍼런스를 통해 변수를 변경하면 원래 변수의 값도 변경됩니다.
- 레퍼런스는 선언 시점에 반드시 초기화되어야 하며, 한 번 초기화된 레퍼런스는 다른 변수를 참조할 수 없습니다.
*/
int x = 10;
int &y = x; // y는 x의 레퍼런스
y += 5; // y를 통해 x의 값을 변경
cout << "x: " << x << endl; // 출력: x: 15
cout << "y: " << y << endl; // 출력: y: 15
/*
주의사항:
1. 레퍼런스는 선언과 동시에 초기화되어야 합니다.
*/
// int &z; // 오류: 레퍼런스가 초기화되지 않았습니다.
/*
2. 레퍼런스는 한 번 초기화되면 그 이후에 다른 변수를 참조할 수 없습니다.
*/
int z = 20;
// y = z; // 이렇게 해도 y는 x를 계속 참조하게 됩니다. y의 값은 변경되지만 y가 참조하는 대상은 변경되지 않습니다.
/*
3. NULL 레퍼런스는 허용되지 않습니다. 즉, 레퍼런스는 항상 유효한 변수를 참조해야 합니다.
*/
// int &nullRef = nullptr; // 오류: 레퍼런스는 nullptr로 초기화할 수 없습니다.
/*
4. 배열의 각 원소에 대한 레퍼런스를 생성할 수 있습니다. 하지만 전체 배열에 대한 레퍼런스는 생성할 수 없습니다.
*/
int arr[3] = {1, 2, 3};
int &ref1 = arr[0]; // 배열의 첫 번째 원소에 대한 레퍼런스
// int &refArr[3] = arr; // 오류: 배열에 대한 레퍼런스 배열은 허용되지 않습니다.
return 0;
}