전에 '함수의 작동 방법' 편에서 'Call by Value'를 배웠습니다. 그건 변수의 값이 복사되어서 간 것이고, 실제 변수의 값은 바뀌지 않는다고 했습니다. 그런데 이 상황을 보실까요?
int add(int *x, int *y){ *x += *y; return *x; } int main(){ int a = 5, b = 5; printf("%d %d", add(a, b), a); }
이렇게 하면 매개변수가 포인터 변수가 되면서 함수가 작동 할 때 a, b의 실인수 값이 바뀝니다. 그래서 출력문은 10, 10이 되는 것이죠.