함수의 참조자 매개변수
참조자를 가인수로 사용하여 call by reference 방식의 프로세스를 자동화할 수 있다. 참조자를 가인수로 사용하면 실인수 앞에 &를 붙이지 않아도 컴파일러는 실인수의 주소를 자동적으로 가인수에 전달한다 (실제로는 실인수 앞에 &를 붙이면 오류가 발생하므로 주의해야 한다). 함수의 가인수로 참조자를 사용하면 포인터를 가인수로 사용하는 call by reference방식과 동일한 효과를 얻을 수 있다. 그리고 포인터 연산자를 사용하는 번거로움을 피할 수 있으니 편리하다.
예제
#include <iostream>
using namespace std;
void swap(int& x, int& y); //함수의 원형 선언
int main()
{
int x, y;
x = 100, y = 600;
cout << "original values: ";
cout << "x=" << x << ",y=" << y << endl;
swap(x, y); //함수호출//기호 &를 실인수 앞에 붙이지 않는다.
cout << "new values: " << endl;
cout << "x=" << x << ",y=" << y << endl;
return 0;
}
void swap(int& a, int& b) //참조자가 가인수를 사용 //int &a=x, int &b=y
{
int temp;
temp = a; //가인수 a는 참조자이므로 기호 *를 붙이지 않는다.
a = b; //가인수 a는 참조자이므로 기호 *를 붙이지 않는다.
b = temp;
}
결과
original values: x=100,y=600
new values: x=600,y=100
※ 참조자를 가인수로 사용하여 call by reference 방식의 프로세스를 자동화할 수 있다. 참조자를 가인수로 사용하는 경우에는 실인수 앞에 &를 붙이지 않는다.
※ 참조자 가인수 a는 실인수 x와 동일하며 참조자 가인수 b는 실인수 y와 동일하다.
※ 피 호출 함수 swap()에서 참조자 가인수 a와 b의 값을 서로 바꾸면 대응되는 실인수 x와 y의 값도 바뀌게 된다. 이때 참조자 가인수 a와 b앞에 *를 사용하지 않는다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
[C++] 1-10 함수의 오버로딩 설명 및 조건 (49) | 2023.11.17 |
---|---|
[C++] 1-9 인라인 함수 장점과 단점 (48) | 2023.11.16 |
[C++] 1-7 참조자(Reference) 사용 이유 및 포인터 차이 (38) | 2023.11.14 |
[C++] 1-6 함수 호출 방식 (call by reference) (49) | 2023.11.13 |
[C++] 1-5 함수 호출 방식 (call by value) (50) | 2023.11.10 |