먼저 값에 의한 전달, 참조에 의한 전달의 차이점이 생긴 이유를 알아야 될듯싶습니다.

c++ 프로그래밍에선 사용자 함수를 많이 쓰게 되는데,

변수 선언시에 전체 선언이 아니라 함수안에서 지역선언으로 하게되면

다른 함수에서는 그 변수를 사용할 수가 없게됩니다.

대신 그 변수들의 값은 전달인자로 사용할수 있습니다만, 그것들을 사용하여 계산 결과를 리턴하는데

사용될뿐 실제 그 변수 주소의 값은 변경할 수 가 없습니다.

그러나 참조에 의한 전달은 그 변수의 주소자체를 전달 하기 때문에

마치 변수 하나에 이름이 두개인것 처럼 사용할 수가 있습니다.



~cpp 
#include <iostream>
using namespace std;
double cube(double a);
double refcube(double & ra);

void main()
{
      double x = 3.0;

      cout << cube(x);
      cout << " = " << x << "의 세제곱 \n";
      cout << refcube(x);
      cout << " = " << x << "의 세제곱 \n";
      return 0;
}

double cube(double a)
{
      a *= a * a;
      return a;
}

double refcube(double & ra)
{
      ra *= ra * ra;
      return ra;
}

이 소스의 결과는

27 = 3의 세제곱
27 = 27의 세제곱

참조전달에 의한 함수를 사용하였을경우 변수 자체의 값이 바뀌기 때문에 위와 같은 결과가 나옵니다.

Retrieved from http://wiki.zeropage.org/wiki.php/HardcoreCppStudy/첫숙제/ValueVsReference/임민수
last modified 2021-02-07 05:23:22