まとめ:関数のポインタ引数
CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 30/63。
チャレンジ
簡単ポインタ引数を使用して、配列内の最小値と最大値の両方を見つける関数を実装するCプログラムを作成してください。プログラムは以下の要件を満たす必要があります:
- 4つのパラメータを受け取る
findMinMaxという名前の関数を作成します:- 整数の配列
- 配列のサイズ
- 最小値を格納するための整数へのポインタ
- 最大値を格納するための整数へのポインタ
findMinMax関数内で、配列を反復処理して最小値と最大値を見つけます- デリファレンス演算子を使用して、最小値を min ポインタが指すアドレスに格納します
- デリファレンス演算子を使用して、最大値を max ポインタが指すアドレスに格納します
main関数で、配列の要素数を表す整数nを読み取りますn個の整数値を読み取り、配列に格納します- 結果を格納するために、2つの整数変数
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;
}