Wiederholung: Array-Durchlauf mit Pointern
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 11 von 63.
Aufgabe
EinfachSchreiben Sie ein C-Programm, das eine Funktion implementiert, um die Summe aller Elemente in einem Integer-Array unter Verwendung von Zeigerarithmetik und Array-Zeiger-Äquivalenz zu berechnen. Ihr Programm sollte:
- Eine Funktion namens
calculateSumerstellen, die zwei Parameter entgegennimmt:- Einen Zeiger auf einen Integer (
int *arr), der das Array repräsentiert - Einen Integer (
size), der die Anzahl der Elemente im Array repräsentiert
- Einen Zeiger auf einen Integer (
- Innerhalb der Funktion
calculateSum:- Eine Variable
summit 0 initialisieren - Eine Zeigervariable
ptrerstellen und sie so setzen, dass sie auf den Anfang des Arrays zeigt - Eine Schleife verwenden, um das Array mittels Zeigerarithmetik zu durchlaufen
- In jeder Iteration den Wert, auf den
ptrzeigt, zusumaddieren - Den Zeiger inkrementieren, um zum nächsten Element zu gelangen
- Die berechnete Summe zurückgeben
- Eine Variable
- In der
main-Funktion:- Einen Integer
neinlesen, der die Größe des Arrays repräsentiert - Ein Integer-Array der Größe
ndeklarieren nInteger von der Eingabe einlesen, um das Array zu füllen- Die Funktion
calculateSummit dem Array und seiner Größe aufrufen - Das Ergebnis im Format "Sum: [value]" ausgeben
- Einen Integer
Die Funktion muss Zeigerarithmetik für den Array-Durchlauf verwenden - verwenden Sie keine Array-Indizierung wie arr[i]. Verwenden Sie stattdessen Zeiger-Dereferenzierung und Inkrement-Operationen, um auf die Array-Elemente zuzugreifen.
Zum Beispiel, wenn die Eingabe wie folgt lautet:
5
10 20 30 40 50Ihre Ausgabe sollte sein:
Sum: 150Diese Herausforderung testet Ihr Verständnis dafür, wie Funktionen Arrays als Zeigerparameter akzeptieren können, wie man Zeigerarithmetik verwendet, um Arrays effizient zu durchlaufen, und wie Array-Namen automatisch in Zeiger umgewandelt werden, wenn sie an Funktionen übergeben werden.
Probier es selbst
#include <stdio.h>
// TODO: Schreibe hier deine calculateSum-Funktion
int main() {
int n;
scanf("%d", &n);
int arr[n];
// Array-Elemente einlesen
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: Rufe die calculateSum-Funktion auf und speichere das Ergebnis
// TODO: Gib das Ergebnis im Format "Sum: [value]" aus
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