선언될 때 &은 참조(레퍼런스)로 쓰인다.

1
2
3
4
5
6
7
8
int a = 50;
 
//a를 b로도 부를 수 있다.
int &= a;
= 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의 메모리값에 직접 접근했기 때문이다.

Posted by misty_
,