Zusammenfassung: Zeiger als Funktionsargumente
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 30 von 63.
Aufgabe
EinfachSchreiben 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:
- Eine Funktion namens
findMinMaxerstellen, 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
- Innerhalb der Funktion
findMinMaxdas Array durchlaufen, um die Minimal- und Maximalwerte zu finden - Den Dereferenzierungsoperator verwenden, um den Minimalwert an der Adresse zu speichern, auf die der min-Zeiger zeigt
- Den Dereferenzierungsoperator verwenden, um den Maximalwert an der Adresse zu speichern, auf die der max-Zeiger zeigt
- In der
main-Funktion eine Ganzzahlneinlesen, die die Anzahl der Elemente im Array darstellt nGanzzahlwerte einlesen und in einem Array speichern- Zwei Integer-Variablen
minValueundmaxValuedeklarieren, um die Ergebnisse zu speichern - Die Funktion
findMinMaxaufrufen und dabei das Array, seine Größe sowie die Adressen vonminValueundmaxValueübergeben - Die Ergebnisse im Format
Minimum: [value]undMaximum: [value]ausgeben
Wenn die Eingabe zum Beispiel wie folgt lautet:
5
12 7 23 4 18Sollte Ihre Ausgabe wie folgt aussehen:
Minimum: 4
Maximum: 23Diese 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
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-Funktionen