Robotics/C++
C++ Reference (참조)
Jeonggeun
2022. 10. 23. 15:06
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으로 출력값이 바뀌어 출력됩니다.
반응형