참조자는 변수의 별명이라고 생각하면 된다.

변수는 할당한 메모리 공간에 대한 이름이다. 그 공간에 이름을 하나 더 붙여주는 것이 참조자이다.


int val = 10;

int &ref = val; //참조자는 선언과 동시에 변수로 초기화 되어야 함.


 위와 같이 선언하면 해당 메모리에 10이라는 값이 저장되어 있고 그 공간의 이름은 val, ref 이렇게 두 개가 된다.

따라서,


cout << val << endl;

cout << ref << endl;


위와 같이 출력했을 때 둘 다 10 출력 된다.


#include <iostream>

using namespace std;


void Swap_Ref(int &a, int &b) //매개변수는 함수가 호출되어야 초기화가 진행되는 변수들이다.

{

int temp = a;

a=b;

b=temp;

}



int main(void)

{

int value1 = 100;

int value2 = 200;

Swap_Ref(value1, value2);


cout << value1 << endl;

cout << value2 << endl;

return 0;

}



응용 : 포인터 변수를 인자로 주었을 때 Swap() 함수

#include <iostream>

using namespace std;


void Swap(int* &a, int* &b)

{

int *temp = a;

a = b;

b = temp;


}


int main(void)

{

int a=10, b=20;

int *ptr1=&a;

int *ptr2=&b;


cout << ptr1 << " [before] " << ptr2 << endl;

cout << *ptr1 << " [before] " << *ptr2 << endl;

Swap(ptr1, ptr2);

cout << ptr1 << " [after] " << ptr2 << endl;

cout << *ptr1 << " [after] " << *ptr2 << endl;

return 0;


+ Recent posts