Menu
Coddy logo textTech

Zusammenfassung: Zeiger als Funktionsargumente

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 30 von 63.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das eine Funktion implementiert, um sowohl den Minimal- als auch den Maximalwert in einem Array mithilfe von Zeiger-Argumenten zu finden. Ihr Programm sollte:

  1. Eine Funktion namens findMinMax erstellen, die vier Parameter entgegennimmt:
    • Ein Integer-Array
    • Die Größe des Arrays
    • Einen Zeiger auf einen Integer zum Speichern des Minimalwerts
    • Einen Zeiger auf einen Integer zum Speichern des Maximalwerts
  2. Innerhalb der Funktion findMinMax das Array durchlaufen, um die Minimal- und Maximalwerte zu finden
  3. Den Dereferenzierungsoperator verwenden, um den Minimalwert an der Adresse zu speichern, auf die der min-Zeiger zeigt
  4. Den Dereferenzierungsoperator verwenden, um den Maximalwert an der Adresse zu speichern, auf die der max-Zeiger zeigt
  5. In der main-Funktion eine Ganzzahl n einlesen, die die Anzahl der Elemente im Array darstellt
  6. n Ganzzahlwerte einlesen und in einem Array speichern
  7. Zwei Integer-Variablen minValue und maxValue deklarieren, um die Ergebnisse zu speichern
  8. Die Funktion findMinMax aufrufen und dabei das Array, seine Größe sowie die Adressen von minValue und maxValue übergeben
  9. Die Ergebnisse im Format Minimum: [value] und Maximum: [value] ausgeben

Wenn die Eingabe zum Beispiel wie folgt lautet:

5
12 7 23 4 18

Sollte Ihre Ausgabe wie folgt aussehen:

Minimum: 4
Maximum: 23

Diese Herausforderung demonstriert die leistungsfähige Technik, mehrere Zeiger-Argumente zu verwenden, um mehrere Werte aus einem einzigen Funktionsaufruf zurückzugeben, wodurch die Funktion Variablen im Gültigkeitsbereich der aufrufenden Funktion ändern kann.

Probier es selbst

#include <stdio.h>

// TODO: Schreiben Sie hier Ihre findMinMax-Funktion

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: Rufen Sie hier die findMinMax-Funktion auf
    
    printf("Minimum: %d\n", minValue);
    printf("Maximum: %d\n", maxValue);
    
    return 0;
}

Alle Lektionen in Logic & Flow