48.6 연습문제: 함수에서 반환값으로 값 한 개, 매개변수로 값 두 개 꺼내기

다음 소스 코드를 완성하여 10 20 30이 출력되게 만드세요. 함수의 반환값으로 값을 한 개 꺼내고 매개변수로 값을 두 개 꺼내야 합니다.

practice_parameter_pointer.c

#include <stdio.h>

__________________
...
__________________

int main()
{
    int num1 = 0;
    int num2 = 0;
    int result = 0;

    result = getNumber(&num1, &num2);

    printf("%d %d %d\n", num1, num2, result);

    return 0;
}

실행 결과

10 20 30

정답

int getNumber(int *a, int *b)
{
    *a = 10;
    *b = 20;
    return 30;
}

해설

함수에서 반환값으로 값을 한 개 꺼내고 매개변수로 값을 두 개 꺼내는 문제입니다. 여기서는 getNumber함수에 변수 num1, num2의 메모리 주소를 넣은 뒤 printf로 변수 num1, num2의 값을 출력했을 때 10, 20이 나왔습니다. 그리고 함수의 반환값을 출력했을 때 30이 나왔습니다. 따라서 getNumber 함수를 만들 때 int getNumber(int *a, int *b)와 같이 반환값은 int, 매개변수는 int 포인터 두 개를 지정합니다. 그다음에 함수 안에서 포인터 a를 역참조하여 10을 저장하고, b를 역참조하여 20을 저장합니다. 마지막으로 return을 사용하여 30을 반환해주면 됩니다.