c++

값에 의한 호출 call by value

TIM_0529 2021. 8. 26. 12:48
반응형

함수 호출에는 3가지 방법이 있다.

그 중 값에 의한 호출인 

call by value를 한 번 사용해 보겠습니다.

바로 예시를 보여주면서 설명하겠습니다.

#include <iostream>
using namespace std;

int sum(int a, int b);

int main()
{
	int num1 = 2;
	int num2 = 3;
	cout << sum(num1, num2) << endl;

}
int sum(int a, int b)
{
	return a + b;
}

결과는 우리가 예상한 대로 5가 출력이 됩니다. 

그렇다면 다음을 보겠습니다.

#include <iostream>
using namespace std;

void Swap(int a, int b);

int main()
{
	int num1 = 2;
	int num2 = 3;
	Swap(num1, num2);
	cout << "num1 = "<<num1 << endl <<"num2 = "<< num2 << endl;

}
void Swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
}

우리가 생각하기에 별 이상이 없다. 인자값을 전달 받은 Swap함수는 두 인자에 위치를 바꾸는 함수를 잘 실행했을 것이고, 그 값이 저장된 num1과 num2는 서로 변수가 바뀌었을 것이라고 생각할 것이다.

그렇다면 결과를 보자

결과는 

"num1 = 2

 num2 = 3" Swap이 이루어지지 않았다.

이유는 이러한 방식은 값에 의한 호출이기 때문이다.

값에 의한 호출은 함수 외부에 변수에 접근할 방법이 없기 때문에 값이 바뀌지 않는 것이다. 

다른 함수에서 접근하여 변수를 바꾸기 위한 목적으로 함수를 만드려면 

다른 방식을 써야한다.

다음에는 그 방법 중 하나인 참조에 의한 호출을 소개해 보겠습니다.

 

반응형