Mit ver­schie­de­nen Techniken kannst du die Länge von Arrays in C ermitteln. Das hilft dir dabei, Arrays flexibel zu verwalten und direkt auf Grö­ßen­än­de­run­gen zu reagieren.

C Array Length

Die Länge eines C-Arrays gibt an, wie viele Elemente sich darin befinden. Dieser Wert ist wichtig, um auf einzelne Einträge zu­zu­grei­fen, das Array zu durch­lau­fen oder Daten an­zu­pas­sen. De­kla­rierst du ein Array in C, wird der Spei­cher­platz im RAM fort­lau­fend re­ser­viert. Da C keine in­te­grier­te Funktion für die Array-Länge besitzt, musst du diese selbst berechnen.

Gängige Methoden dafür sind:

  • sizeof()
  • Pointer-Arith­me­tik
  • Schleifen

sizeof()

sizeof() zählt zu den C-Ope­ra­to­ren. Er bestimmt die Größe eines Datentyps oder einer Variable in Bytes bereits beim Kom­pi­lie­ren. Das Ergebnis von sizeof ist vom Typ size_t (ein vor­zei­chen­lo­ser Ganz­zahl­typ). Mit sizeof() lässt sich in C auch ganz einfach die Array-Länge ermitteln.

Syntax

Um die Anzahl der Elemente zu erhalten, teilst du die Ge­samt­grö­ße des Arrays durch die Größe eines einzelnen Elements.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Der Datentyp, in dem du die Länge speichern möchtest.
  • array_name: Der Name deines Arrays.
  • sizeof(array_name): Liefert die gesamte Byte-Größe des Arrays.
  • sizeof(array_name[index]): Teilst du die Ge­samt­grö­ße durch die Größe eines Elements, erhältst du die Anzahl der Einträge.
  • index: Steht für die Position eines Elements im Array.

Beispiel

Hier nutzen wir sizeof(), um die Größe des Arrays myArray sowie eines einzelnen Elements zu bestimmen. Durch Division dieser Werte errechnen wir die Ele­ment­an­zahl.

int main() {
    int myArray[] = {1, 2, 3, 4, 5};
    size_t totalSize = sizeof(myArray);
    size_t elementSize = sizeof(myArray[0]);
    size_t arrayLength = totalSize / elementSize;
    printf("Total size of the array: %d bytes\n", (int)totalSize);
    printf("Size of a single element: %d bytes\n", (int)elementSize);
    printf("Number of elements in the array: %d\n", (int)arrayLength);
    return 0;
}
c

Die Ausgabe ist:

Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5
c

Pointer-Arith­me­tik

Rein über Pointer lässt sich die Länge nicht direkt ablesen, da ein Zeiger keine Infos zur Array-Größe speichert. Du kannst jedoch die Spei­cher­adres­sen der Elemente nutzen, um die C Array Length zu berechnen.

Syntax

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Re­prä­sen­tiert einen Zeiger auf das Array.
  • (&arr + 1): Hier wird der Zeiger auf das Array arr um den Wert 1 erhöht. Da arr ein Array ist, zeigt der Zeiger nun auf den Bereich direkt hinter dem aktuellen Array-Typ.

Beispiel

Der Befehl *(&arr + 1) - arr ermittelt den Abstand zwischen dem Zeiger auf das Ende (bzw. den Bereich danach) und dem Start des Arrays. Diese Differenz ent­spricht exakt der Anzahl der ent­hal­te­nen Elemente.

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int length = *(&arr + 1) - arr;
    printf("Number of elements in the array: %d\n", length);
    return 0;
}
c

Ausgabe:

Number of elements in the array: 5
c

Schleifen

Du kannst die C Array Length auch mit einer for-Schleife fest­stel­len. Dabei wanderst du durch das Array und zählst die Elemente mit. Wichtig: Das Array muss im gleichen Gül­tig­keits­be­reich (Scope) definiert sein, in dem auch die Zählung statt­fin­det.

Beispiel

Die Schleife erhöht den Zähler arrayLength bei jedem Durchgang. Über die Bedingung i < sizeof(arr) / sizeof(arr[0]) stellen wir sicher, dass nur tat­säch­lich vor­han­de­ne Elemente gezählt werden.

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
    size_t arrayLength = 0;
    for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
        arrayLength++;
    }
    printf("Number of elements in the array: %d\n", arrayLength);
    return 0;
}
c

Ausgabe:

Number of elements in the array: 8
c
Zum Hauptmenü