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값 출력
결과적으로 보면 주소와 참조에 의한 전달만이 변수의 값이 바뀌는것을 확인할 수 있다.
실제 매개변수의 값이 다른 함수에 의해 방해받는 것을 원하지 않을 경우에는 값에 의한 전달을 하고
원하는 경우에는 주소와 참조에 의한 전달을 하는 방식을 택해야겠다.