더북(TheBook)

그러면 변수의 주소 자체를 넘기면 어떨까요? 변수의 주소를 전달받는 swap_addr()함수를 추가해 봅시다.

main()함수 앞에 swap_addr()함수를 선언합니다. swap_addr()함수는 main()함수에 선언한 두 변수의 주소를 전달받습니다. 앞에서 철수네 주소를 미션맨이라는 포인터 변수에 저장했죠. 이와 마찬가지로 swap_addr()함수도 주소를 전달받으려면 포인터 변수가 필요합니다. 따라서 매개변수 ab 앞에 *를 추가해 포인터 변수로 선언합니다.

main()함수 뒤에 swap_addr()함수를 정의합니다.

temp 변수에는 주소가 아닌 실제 값을 저장해야 합니다. 포인터 변수 a에는 주소가 들어 있으므로 앞에 *를 붙여 포인터 변수 a에 담긴 주소의 실제 값을 temp 변수에 저장합니다.

포인터 변수 b에 담긴 주소의 실제 값을 포인터 변수 a에 담긴 주소의 값으로 넣도록 두 변수 앞에 모두 *를 붙입니다.

temp의 값을 포인터 변수 b에 담긴 주소의 값으로 넣도록 b 앞에만 *를 붙입니다.

마지막으로 값을 출력합니다. 이때 포인터 변수에 담긴 주소의 실제 값을 출력해야 하므로 ab 앞에 *를 추가합니다.

main()함수에서 swap_addr()함수를 호출합니다. 이때 주소를 전달하므로 변수 앞에 &를 붙입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.