C Array length bestimmen: Die besten Methoden
Mit verschiedenen Techniken kannst du die Länge von Arrays in C ermitteln. Das hilft dir dabei, Arrays flexibel zu verwalten und direkt auf Größenänderungen 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 zuzugreifen, das Array zu durchlaufen oder Daten anzupassen. Deklarierst du ein Array in C, wird der Speicherplatz im RAM fortlaufend reserviert. Da C keine integrierte Funktion für die Array-Länge besitzt, musst du diese selbst berechnen.
Gängige Methoden dafür sind:
- sizeof()
- Pointer-Arithmetik
- Schleifen
sizeof()
sizeof() zählt zu den C-Operatoren. Er bestimmt die Größe eines Datentyps oder einer Variable in Bytes bereits beim Kompilieren. Das Ergebnis von sizeof ist vom Typ size_t (ein vorzeichenloser Ganzzahltyp). 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 Gesamtgröß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 Gesamtgröß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 Elementanzahl.
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;
}cDie Ausgabe ist:
Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5cPointer-Arithmetik
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 Speicheradressen der Elemente nutzen, um die C Array Length zu berechnen.
Syntax
data_type arr_length = *(&arr + 1) - arr;c&arr: Repräsentiert einen Zeiger auf das Array.(&arr + 1): Hier wird der Zeiger auf das Arrayarrum den Wert 1 erhöht. Daarrein 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 entspricht exakt der Anzahl der enthaltenen 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;
}cAusgabe:
Number of elements in the array: 5cSchleifen
Du kannst die C Array Length auch mit einer for-Schleife feststellen. Dabei wanderst du durch das Array und zählst die Elemente mit. Wichtig: Das Array muss im gleichen Gültigkeitsbereich (Scope) definiert sein, in dem auch die Zählung stattfindet.
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 tatsächlich vorhandene 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;
}cAusgabe:
Number of elements in the array: 8c