함수와 함수 사이에서는 ‘값에 의한 호출’에 따라 값의 복사가 이루어지므로 swap() 함수에서는 main() 함수의 변수를 변경할 수가 없습니다. 그리고 이 한계를 해결하는 것이 바로 포인터입니다. 어떻게 해결할까요?
main() 함수에서 호출 시 값을 전달하는 것이 아니라 주소를 전달하는 것입니다. 포인터 변수는 주소를 가지고 있으며 가리키는 주소를 참조할 수 있으므로, 역참조를 사용하여 swap() 함수에서 main() 함수의 x, y의 값을 변경할 수 있습니다.
잘 이해가 안 될 수도 있으니 하나하나 차례대로 살펴보겠습니다. 우선 main() 함수에서 swap(&x, &y)와 같이 x, y의 값이 아닌 주소를 swap() 함수에 전달합니다.
그림 8-13 | 포인터를 사용하여 값을 변경하는 방법