Arrays

0

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 statt 5 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]);
  }
}
Nach oben scrollen