Minwoo Dev.
[C++] 참조자를 이용하여 함수 만들기, Call by reference with reference 본문
728x90
반응형
SMALL
참조자를 이용해서도 포인터를 사용하는 것처럼 Call-by-reference 형식의 함수를 만들 수 있다.
Call-by-reference
- 함수 외부의 값을 받아와 함수 내부에서 값을 변경할 수 있는 형태
- C언어에서는 포인터를 사용하여 함수 외부의 값을 함수 내부에서 변경할 수 있었다.
우선, 포인터를 이용한 기존의 방식부터 살펴보자.
포인터를 이용한 Call-by-reference 함수
#include <iostream>
using namespace std;
void Swap(int *n1, int *n2)
{
int temp = *n1;
*n1 = *n2;
*n2 = temp;
}
int main(void)
{
int num1 = 3, num2 = 5;
cout << "Before Swap" << endl;
cout << "num1 : " << num1 << endl;
cout << "num2 : " << num2 << endl
<< endl;
Swap(&num1, &num2);
cout << "After Swap" << endl;
cout << "num1 : " << num1 << endl;
cout << "num2 : " << num2 << endl;
return 0;
}
포인터를 이용하여 전달받은 두 값을 서로 바꿔주는 함수이다.
결과
참조자를 사용한 Call-by-reference
#include <iostream>
using namespace std;
void Swap(int &n1, int &n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
int main(void)
{
int num1 = 3, num2 = 5;
cout << "Before Swap" << endl;
cout << "num1 : " << num1 << endl;
cout << "num2 : " << num2 << endl
<< endl;
Swap(num1, num2);
cout << "After Swap" << endl;
cout << "num1 : " << num1 << endl;
cout << "num2 : " << num2 << endl;
return 0;
}
이번에는 참조자를 이용하여 Swap 함수를 구현한 모습이다.
결과
포인터를 사용한 함수와의 차이점은 main 코드 내부에서도 드러난다.
포인터를 사용한 함수는 인자값으로 &를 붙여 주소값을 전달해야하지만, 참조자를 사용하면 변수를 그대로 넣어주면 된다.
728x90
반응형
LIST
'C++' 카테고리의 다른 글
[C++] new , delete (0) | 2024.03.10 |
---|---|
[C++] const 참조자, const 참조자를 사용한 Call-by-reference (0) | 2024.03.10 |
[C++] 참조자 (0) | 2024.03.10 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch04-3 : C++ 기반의 데이터 입출력 문제풀이 (0) | 2024.03.09 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch04-2 : 다양한 클래스의 정의 문제풀이 (1) | 2024.03.09 |