티스토리 친구하기

본문 바로가기

Robotics/C++

C++ Reference (참조)

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으로 출력값이 바뀌어 출력됩니다.

 

 

반응형