그러면 변수의 주소 자체를 넘기면 어떨까요? 변수의 주소를 전달받는 swap_addr()함수를 추가해 봅시다.
➊ main()함수 앞에 swap_addr()함수를 선언합니다. swap_addr()함수는 main()함수에 선언한 두 변수의 주소를 전달받습니다. 앞에서 철수네 주소를 미션맨이라는 포인터 변수에 저장했죠. 이와 마찬가지로 swap_addr()함수도 주소를 전달받으려면 포인터 변수가 필요합니다. 따라서 매개변수 a와 b 앞에 *를 추가해 포인터 변수로 선언합니다.
➋ main()함수 뒤에 swap_addr()함수를 정의합니다.
➌ temp 변수에는 주소가 아닌 실제 값을 저장해야 합니다. 포인터 변수 a에는 주소가 들어 있으므로 앞에 *를 붙여 포인터 변수 a에 담긴 주소의 실제 값을 temp 변수에 저장합니다.
➍ 포인터 변수 b에 담긴 주소의 실제 값을 포인터 변수 a에 담긴 주소의 값으로 넣도록 두 변수 앞에 모두 *를 붙입니다.
➎ temp의 값을 포인터 변수 b에 담긴 주소의 값으로 넣도록 b 앞에만 *를 붙입니다.
➏ 마지막으로 값을 출력합니다. 이때 포인터 변수에 담긴 주소의 실제 값을 출력해야 하므로 a와 b 앞에 *를 추가합니다.
➐ main()함수에서 swap_addr()함수를 호출합니다. 이때 주소를 전달하므로 변수 앞에 &를 붙입니다.