Zurück zu: C Tutorial
Arrays
Arrays werden verwendet, um mehrere Werte in einer einzigen Variablen zu speichern, anstatt für jeden Wert separate Variablen zu deklarieren.
Um ein Array zu erstellen, definieren Sie den Datentyp (wie int
) und geben Sie den Namen des Arrays gefolgt von eckigen Klammern [] an.
Um Werte einzufügen, verwenden Sie eine durch Kommas getrennte Liste in geschweiften Klammern:
int meineZahlen[] = {25, 50, 75, 100};
Wir haben jetzt eine Variable erstellt, die ein Array aus vier Ganzzahlen enthält.
Auf die Elemente eines Arrays zugreifen
Um auf ein Array-Element zuzugreifen, beziehen Sie sich auf seine Indexnummer.
Array-Indizes beginnen mit 0: [0] ist das erste Element. [1] ist das zweite Element usw.
Diese Anweisung greift auf den Wert des ersten Elements [0] in myNumbers
zu:
Beispiel
int myNumbers[] = {25, 50, 75, 100};
printf("%d", myNumbers[0]);
// Outputs 25
Ändern eines Array Elements
Um den Wert eines bestimmten Elements zu ändern, beziehen Sie sich auf die Indexnummer:
Beispiel
myNumbers[0] = 33;
Beispiel
int myNumbers[] = {25, 50, 75, 100};
myNumbers[0] = 33;
printf("%d", myNumbers[0]);
// Now outputs 33 instead of 25
Durchlaufen eines Arrays
Mit der For
Schleife können Sie die Array Elemente durchlaufen.
Das folgende Beispiel gibt alle Elemente im Array myNumbers
aus:
Beispiel
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
Array Größe festlegen
Eine weitere gängige Möglichkeit zum Erstellen von Arrays besteht darin, die Größe des Arrays anzugeben und später Elemente hinzuzufügen:
Beispiel
// Declare an array of four integers:
int myNumbers[4];
// Add elements
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
Bei dieser Methode sollte man die Anzahl der Array Elemente vorab kennen, damit das Programm genügend Speicher vorhalten kann.
Sie können die Größe des Arrays nach der Erstellung nicht mehr ändern.
Array Größe oder Länge ermitteln
Um die Größe eines Arrays zu ermitteln, können Sie den Operator sizeof
verwenden:
Beispiel
int myNumbers[] = {10, 25, 50, 75, 100};
printf("%lu", sizeof(myNumbers)); // Prints 20
Warum wurde als Ergebnis
20
statt5
angezeigt, wenn das Array 5 Elemente enthält?
– Dies liegt daran, dass der Sizeof
Operator die Größe eines Typs in Bytes zurückgibt.
Im Kapitel „Datentypen“ haben Sie gelernt, dass ein int
Typ normalerweise 4 Byte groß ist. Im obigen Beispiel ergibt sich also 4 x 5 (4 Byte x 5 Elemente) = 20 Byte.
Die Kenntnis der Speichergröße eines Arrays ist hilfreich, wenn Sie mit größeren Programmen arbeiten, die eine gute Speicherverwaltung erfordern.
Wenn Sie jedoch nur herausfinden möchten, wie viele Elemente ein Array hat, können Sie die folgende Formel verwenden (die die Größe des Arrays durch die Größe eines Array-Elements dividiert):
Beispiel
int myNumbers[] = {10, 25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
printf("%d", length); // Prints 5
Bessere Loops erstellen
Im Abschnitt zu Array Schleifen im vorherigen Kapitel haben wir die Größe des Arrays in die Schleifenbedingung (i < 4
) geschrieben. Dies ist nicht ideal, da es nur für Arrays einer bestimmten Größe funktioniert.
Indem wir jedoch die Sizeof
Formel aus dem obigen Beispiel verwenden, können wir jetzt Schleifen erstellen, die für Arrays jeder Größe funktionieren, was nachhaltiger ist.
Anstatt zu schreiben:
Beispiel
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
Besser ist es zu schreiben:
Beispiel
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;
for (i = 0; i < length; i++) {
printf("%d\n", myNumbers[i]);
}
Beispiel aus dem echten Leben
Um die Verwendung von Arrays anhand eines praktischen Beispiels zu demonstrieren, erstellen wir ein Programm, das den Durchschnitt verschiedener Altersgruppen berechnet:
Beispiel
// An array storing different ages
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
float avg, sum = 0;
int i;
// Get the length of the array
int length = sizeof(ages) / sizeof(ages[0]);
// Loop through the elements of the array
for (i = 0; i < length; i++) {
sum += ages[i];
}
// Calculate the average by dividing the sum by the length
avg = sum / length;
// Print the average
printf("The average age is: %.2f", avg);
Und in diesem Beispiel erstellen wir ein Programm, das das niedrigste Alter unter verschiedenen Altersgruppen ermittelt:
Beispiel
// An array storing different ages
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
int i;
// Get the length of the array
int length = sizeof(ages) / sizeof(ages[0]);
// Create a variable and assign the first array element of ages to it
int lowestAge = ages[0];
// Loop through the elements of the ages array to find the lowest age
for (i = 0; i < length; i++) {
if (lowestAge > ages[i]) {
lowestAge = ages[i];
}
}
Mehrdimensionale Arrays
Im vorherigen Kapitel haben Sie etwas über Arrays gelernt, die auch als eindimensionale Arrays bezeichnet werden. Diese sind großartig und etwas, das Sie beim Programmieren in C häufig verwenden werden. Wenn Sie jedoch Daten in tabellarischer Form speichern möchten, z. B. in einer Tabelle mit Zeilen und Spalten, müssen Sie sich mit mehrdimensionalen Arrays vertraut machen.
Ein mehrdimensionales Array ist grundsätzlich ein Array von Arrays.
Arrays können eine beliebige Anzahl von Dimensionen haben. In diesem Kapitel stellen wir die gebräuchlichsten vor: zweidimensionale Arrays (2D).
Zweidimensionale Arrays
Ein 2D-Array wird auch als Matrix bezeichnet (eine Tabelle aus Zeilen und Spalten).
Um ein 2D Array aus Ganzzahlen zu erstellen, sehen Sie sich das folgende Beispiel an:
int matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };
Die erste Dimension stellt die Anzahl der Zeilen [2] dar, während die zweite Dimension die Anzahl der Spalten [3] darstellt. Die Werte werden in Zeilenreihenfolge angeordnet und können wie folgt visualisiert werden:

Zugriff auf die Elemente eines 2D Arrays
Um auf ein Element eines zweidimensionalen Arrays zuzugreifen, müssen Sie die Indexnummer der Zeile und der Spalte angeben.
Diese Anweisung greift auf den Wert des Elements in der ersten Zeile (0) und dritten Spalte (2) des Matrix-Arrays zu.
Beispiel
int matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };
printf("%d", matrix[0][2]); // Outputs 2
Denken Sie daran: Array-Indizes beginnen mit 0: [0] ist das erste Element. [1] ist das zweite Element usw.
Elemente in einem 2D Array ändern
Um den Wert eines Elements zu ändern, beziehen Sie sich auf die Indexnummer des Elements in jeder der Dimensionen:
Das folgende Beispiel ändert den Wert des Elements in der ersten Zeile (0) und der ersten Spalte (0):
Beispiel
int matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };
matrix[0][0] = 9;
printf("%d", matrix[0][0]); // Now outputs 9 instead of 1
Durchlaufen eines 2D Arrays
Um ein mehrdimensionales Array zu durchlaufen, benötigen Sie eine Schleife für jede Dimension des Arrays.
Das folgende Beispiel gibt alle Elemente im Matrix Array aus:
Beispiel
int matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d\n", matrix[i][j]);
}
}