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을 반환해주면 됩니다.