선언될 때 &은 참조(레퍼런스)로 쓰인다.
1 2 3 4 5 6 7 8 | int a = 50; //a를 b로도 부를 수 있다. int &b = a; b = 60; // 출력하면 a의 값이 바뀌어 60이 출력됨. cout << a; | cs |
만약 아래와 같은 코드를 실행하면 결과가 어떻게 될까?
1 2 3 4 5 6 7 | void swap(int x, int y) { int c = x; x = y; y = c; } | cs |
1 2 3 4 5 6 7 8 | void main() { int a = 10; int b = 15; swap(a,b); cout << a << b; } | cs |
답은 값이 바뀌지 않고 10, 15가 출력된다.
변수 c, x, y는 함수가 끝나면 수명이 다 되어 그대로 사라지므로 원래값인 a, b에 영향을 주지 않는것.
만약 swap 함수가 아래와 같다면 어떻게 출력될까?
1 2 3 4 5 6 7 | void swap(int &x, int &y) { int c = x; x = y; y = c; } | cs |
이 경우에는 x와 y의 값이 바뀌어 15와 10이 출력된다.
그 이유는 참조를 이용해 x와 y가 a와 b의 메모리값에 직접 접근했기 때문이다.
'프로그래밍 공부 > C++' 카테고리의 다른 글
정적할당과 동적할당 (0) | 2018.03.12 |
---|---|
주소, 포인터 (0) | 2018.03.12 |
스택, 큐 구현하기 (0) | 2018.03.10 |
폭탄찾기게임 (for문 연습) (0) | 2018.03.10 |
구구단만들기 / 최대공약수, 최소공배수 구하기 (for문 연습) (0) | 2018.03.10 |