48.0 함수에서 포인터 매개변수 사용하기

함수에서 값을 여러 개 반환하려면 어떻게 해야 할까요? 함수 안에서 return을 다음과 같이 작성하면 값을 여러 개 반환할 수 있지 않을까요?

return 10, 20, 30;

아쉽지만, 이런 문법은 지원하지 않습니다.

C 언어에서 값을 여러 개 반환하는 함수를 만들 때는 주로 포인터 매개변수를 사용합니다. 지금까지 매개변수는 함수에 값을 전달할 때 사용했고, 함수 바깥에서 값을 가져오는 용도로는 사용할 수 없었습니다. 즉, 다음과 같이 두 값을 더하는 add 함수는 반환값이 1개이고 매개변수 ab는 함수 안에서만 사용할 수 있었습니다.

그림 48‑1 함수의 반환값은 하나이고 매개변수는 함수 안에서만 유효

하지만 함수에서 포인터 매개변수를 사용하면 함수 안에서 바뀐 내용을 함수 바깥에서도 알 수 있습니다. 따라서 함수 바깥으로 값을 전달할 수 있습니다. 다음은 함수에서 포인터 매개변수를 사용하여 두 변수의 값을 서로 바꾸는 swapNumber 함수인데 이 부분은 뒤에서 자세히 설명하겠습니다.

그림 48‑2 포인터 매개변수는 함수 내부와 외부에서 모두 사용 가능

이번 유닛에서는 포인터 매개변수로 값을 여러 개 반환하는 방법뿐만 아니라 포인터 매개변수의 다양한 사용 방법을 알아보겠습니다. 참고로 포인터 매개변수는 개념이 다소 어려울 수 있습니다.