Game Programming/자문자답

Call By Value / Address / Reference는 무엇인가?

Doanie 2022. 9. 12. 00:15

Call By Value / Address / Reference는 무엇인가?


CallByValue : 값에 의한 전달

CallByAddress : 주소에 의한 전달

CallByReference : 참조에 의한 전달

함수가 호출 될 대 매개변수에 인자를 어떤 방식으로 넣어줄건지에 대한 개념이다.

Call By Value

#include <iostream>

using namespace std;

void CallByValue(int value)
{
	value = 1;
}

int main()
{
	int num = 0;
 	CallByValue(num);
    
  	cout << num << endl;
    
  	return 0;
 }
 // 0값 출력

Call By Address

#include <iostream>

using namespace std;

void CallByAddress(int* address)
{
	*address = 1;
}

int main()
{
	int num = 0;
  	CallByAddress(&num);
    
  	cout << num << endl;
    
  	return 0;
}
// 1값 출력

Call By Reference

#include <iostream>

using namespace std;

void CallByReference(int& reference)
{
	reference = 1;
}

int main()
{
	int num = 0;
 	CallByReference(num);
    
  	cout << num << endl;
    
  	return 0;
}
// 1값 출력

결과적으로 보면 주소와 참조에 의한 전달만이 변수의 값이 바뀌는것을 확인할 수 있다.

실제 매개변수의 값이 다른 함수에 의해 방해받는 것을 원하지 않을 경우에는 값에 의한 전달을 하고

원하는 경우에는 주소와 참조에 의한 전달을 하는 방식을 택해야겠다.