Menu
Coddy logo textTech

まとめ:関数のポインタ引数

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 30/63。

challenge icon

チャレンジ

簡単

ポインタ引数を使用して、配列内の最小値と最大値の両方を見つける関数を実装するCプログラムを作成してください。プログラムは以下の要件を満たす必要があります:

  1. 4つのパラメータを受け取る findMinMax という名前の関数を作成します:
    • 整数の配列
    • 配列のサイズ
    • 最小値を格納するための整数へのポインタ
    • 最大値を格納するための整数へのポインタ
  2. findMinMax 関数内で、配列を反復処理して最小値と最大値を見つけます
  3. デリファレンス演算子を使用して、最小値を min ポインタが指すアドレスに格納します
  4. デリファレンス演算子を使用して、最大値を max ポインタが指すアドレスに格納します
  5. main 関数で、配列の要素数を表す整数 n を読み取ります
  6. n 個の整数値を読み取り、配列に格納します
  7. 結果を格納するために、2つの整数変数 minValuemaxValue を宣言します
  8. 配列、そのサイズ、および minValuemaxValue のアドレスを渡して、findMinMax 関数を呼び出します
  9. 結果を次の形式で出力します: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;
}

Logic & Flowのすべてのレッスン