c++ 과목을 재수강하며(과거의 나 반성해) 오랜만에 call by value와 call by reference를 마주하게 되었다.
개발자들 사이에서 꽤나 논쟁의 여지가 있는 요소라는 것을 알고 이 기회에 제대로 기억해놓자 싶어 정리하게 되었다. (그래봤자 난 야매로 이해하는 것뿐 언어 자체를 세부적으로 파고들면 할 말이 없다)
교수님 역시 Swap 함수를 통해 간단히 설명해주셨다.
// include, std와 같은 문법은 생략
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main(){
int num1 = 10;
int num2 = 20;
swap(num1, num2);
cout << num1 << endl; // 10
cout << num2 << endl; // 20
return 0;
}
'call-by-value'를 수행한 num1, num2의 값은 변경되지 않고 출력된다.
num1, num2의 값을 변경하고 싶다면 다음에 기술할 call-by-reference를 살펴보도록 하자
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 10;
int num2 = 20;
swap(&num1, &num2);
cout << num1 << endl; // 20
cout << num2 << endl; // 10
return 0;
}