요약: 함수 포인터 인자
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 30번째.
챌린지
쉬움포인터 인수를 사용하여 배열에서 최솟값과 최댓값을 모두 찾는 함수를 구현하는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 네 개의 매개변수를 갖는
findMinMax라는 이름의 함수를 생성합니다:- 정수형 배열
- 배열의 크기
- 최솟값을 저장하기 위한 정수형 포인터
- 최댓값을 저장하기 위한 정수형 포인터
findMinMax함수 내부에서 배열을 순회하며 최솟값과 최댓값을 찾습니다.- 역참조 연산자를 사용하여 min 포인터가 가리키는 주소에 최솟값을 저장합니다.
- 역참조 연산자를 사용하여 max 포인터가 가리키는 주소에 최댓값을 저장합니다.
main함수에서 배열의 요소 개수를 나타내는 정수n을 읽습니다.n개의 정수 값을 읽어 배열에 저장합니다.- 결과를 저장할 두 개의 정수형 변수
minValue와maxValue를 선언합니다. - 배열, 배열의 크기, 그리고
minValue와maxValue의 주소를 전달하여findMinMax함수를 호출합니다. - 결과를
Minimum: [value]및Maximum: [value]형식으로 출력합니다.
예를 들어, 입력이 다음과 같다면:
5
12 7 23 4 18출력은 다음과 같아야 합니다:
Minimum: 4
Maximum: 23이 챌린지는 여러 개의 포인터 인수를 사용하여 단일 함수 호출에서 여러 값을 반환하는 강력한 기술을 보여주며, 이를 통해 함수가 호출한 함수의 스코프에 있는 변수를 수정할 수 있게 합니다.
직접 해보기
#include <stdio.h>
// TODO: 여기에 findMinMax 함수를 작성하세요
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int minValue, maxValue;
// TODO: 여기에 findMinMax 함수를 호출하세요
printf("Minimum: %d\n", minValue);
printf("Maximum: %d\n", maxValue);
return 0;
}