728x90
Reference (참조)
- 어떤 변수나 상수를 가리키고 싶을 때, 별명을 붙여서 부를 수 있음
- 별명을 붙여 다른 상수 또는 변수를 가리키는 방법 (Reference - 참조)
Swap 함수 (변수를 복사하여 받는 경우)
#include <iostream>
void Swap(double arg1, double arg2)
{
double temp = arg1;
arg1 = arg2;
arg2 = temp;
}
int main()
{
double num1 = 10;
double num2 = 20;
Swap(num1, num2);
std::cout << "num1: " << num1 << std::endl;
std::cout << "num2: " << num2 << std::endl;
return 0;
}
- Swap 함수가 종료되면, Swap 함수에서 변수를 저장했던 메모리가 날아가기 때문에 main() 문제에서 num1(10)과 num2(20)는 바뀌지 않고 처음 그대로 출력된다.
Swap 함수 (참조로 변수를 받는 경우)
- 아래의 코드는 Swap 함수에서 변수 받는 부분만 변경되었음
#include <iostream>
void Swap(double& arg1, double& arg2)
{
double temp = arg1;
arg1 = arg2;
arg2 = temp;
}
int main()
{
double num1 = 10;
double num2 = 20;
Swap(num1, num2);
std::cout << "num1: " << num1 << std::endl;
std::cout << "num2: " << num2 << std::endl;
return 0;
}
- 이번 Swap함수에서는 main() 함수에서 선언된 num1과 num2를 참조(별명)로 받습니다.
- 이 말은, num1에는 arg1, num2에는 arg2라는 별명을 지어준다는 의미입니다.
- 즉, arg1과 num1은 같은 사람(주소값)을 가리키고 있습니다.
- 따라서, 이번 Swap 함수에서의 arg1와 arg2의 교환은, num1과 num2를 교환하는 것과 같습니다.
즉, num1은 10->20으로, num2는 20->10으로 출력값이 바뀌어 출력됩니다.
반응형
'Robotics > C++' 카테고리의 다른 글
C++ 생성자 (Constructor) (0) | 2022.12.05 |
---|---|
C++ 객체생성 new, delete / 멤버 변수 초기화 (0) | 2022.12.05 |
C++ 접근 제어자 (Access Modifier) public / protected / private (0) | 2022.12.02 |
C++ 함수 오버로딩 (overloading) (0) | 2022.11.22 |