C Array length bestimmen: Die besten Methoden

Durch den Einsatz verschiedener Methoden können Sie die Länge von Arrays in C ermitteln. Dadurch wird es einfacher, Arrays dynamisch zu verwalten und auf Änderungen in der Größe zu reagieren.

C Array Length

Die Länge eines C Arrays bezeichnet die Anzahl der Elemente, die es enthält. Diese Information ist entscheidend, um auf bestimmte Elemente im Array zuzugreifen, es zu durchlaufen oder Manipulationen vorzunehmen. Wenn Sie ein Array in C deklarieren, wird der Speicher für die Elemente des Arrays kontinuierlich im RAM alloziert. In C gibt es keine direkte eingebaute Funktion zur Ermittlung der Array-Länge, daher müssen Sie diese manuell ermitteln.

Zu den häufigsten Methoden zählen:

  • sizeof()
  • Pointer-Arithmetik
  • Schleifen

sizeof()

sizeof()gehört zu den C-Operatoren in der Programmiersprache C. Es ermittelt die Größe eines Datentyps oder einer Variable in Bytes während der Übersetzungszeit (Compile-Zeit). Der Rückgabetyp des sizeof-Operators ist size_t, ein vorzeichenloser ganzzahliger Typ, der die Größe in Bytes repräsentiert. Mit der sizeof()-Funktion in C können Sie auch die C Array Length berechnen.

Syntax

Um die Anzahl der Elemente zu bestimmen, müssen Sie die Gesamtgröße des Arrays durch die Größe eines einzelnen Elements teilen.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Das ist der Datentyp, in welchem die Länge des Arrays gespeichert werden soll.
  • array_name: Gibt den Namen des Arrays an.
  • sizeof(array_name): Diese Ausdrucksanweisung gibt die Gesamtgröße des Arrays in Bytes zurück.
  • sizeof(array_name[index]): Durch die Division der Gesamtgröße des Arrays durch die Größe eines einzelnen Elements erhalten Sie die Anzahl der Elemente im Array.
  • index: Dies steht für den Index eines Elements im Array.

Beispiel

Nachfolgend ermitteln wir mit sizeof() die Größe des Arrays myArray und eines einzelnen Elements in Bytes, wodurch wir im Anschluss die Anzahl der Elemente durch Division der Ergebnisse berechnen können.

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 lautet:

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

Pointer-Arithmetik

Mit Pointer-Arithmetik ist die Länge eines Arrays nicht direkt bestimmbar, da ein Pointer allein keine Information über die Größe oder Länge des zugehörigen Arrays enthält. Aber Sie können die Adressen von Array-Elementen nutzen, um die C Array Length zu ermitteln.

Syntax

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Dies stellt einen Zeiger auf ein Array von Elementen dar.
  • (&arr + 1): Hier wird der Zeiger auf das Array arr um 1 erhöht. Da arr ein Array ist, bedeutet dies, dass der Zeiger auf das nächste aufeinanderfolgende Array vom gleichen Typ wie arr zeigt.

Beispiel

Der Ausdruck *(&arr + 1) - arr berechnet die Differenz zwischen dem Zeiger auf das nächste Array &arr + 1 und dem Zeiger auf das erste Element des ursprünglichen Arrays. In diesem Fall ist der „nächste“ Speicherbereich das Ende des Arrays. Die resultierende Differenz ist gleich der Anzahl der Elemente im Array.

#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

Eine weitere Methode ist das Bestimmen der C Array Length mit einer for-Schleife. Diese iteriert durch das Array und zählt, wie viele Elemente es enthält. Dazu muss das Array im gleichen Gültigkeitsbereich (Scope) deklariert sein, in dem der Code zur Längenbestimmung ausgeführt wird.

Beispiel

Hier erhöht die Schleife den Zähler arrayLength für jedes durchlaufene Element. Die Bedingung i < sizeof(arr) / sizeof(arr[0]) stellt sicher, dass die Schleife nur so lange läuft, wie es tatsächlich Elemente im Array gibt.

#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

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz