먼저 값에 의한 전달, 참조에 의한 전달의 차이점이 생긴 이유를 알아야 될듯싶습니다.
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의 세제곱
참조전달에 의한 함수를 사용하였을경우 변수 자체의 값이 바뀌기 때문에 위와 같은 결과가 나옵니다.
- main() 함수의 리턴형이 void 이기 때문에 return 0은 쓰면 안 됩니다. -영동