C++ Array-Größe
Ermitteln Sie die Größe eines Arrays
Um die Größe eines Arrays zu ermitteln, können Sie den Operator sizeof()
verwenden:
Beispiel
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);
Ergebnis:
20
Warum zeigte das Ergebnis 20
statt 5
an, wenn das Array 5 Elemente enthält?
Das liegt daran, dass der Operator sizeof()
die Größe eines Typs in Bytes zurückgibt.
Sie haben aus dem Kapitel Datentypen erfahren, dass ein int
-Typ normalerweise 4 Bytes groß ist, also aus dem Beispiel oben: 4 x 5 (4 Bytes x 5 Elemente) = 20 Bytes.
Um herauszufinden, wie viele Elemente ein Array hat, müssen Sie die Größe des Arrays durch die Größe des darin enthaltenen Datentyps dividieren:
Beispiel
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;
Ergebnis:
5
Durchlaufen Sie ein Array mit sizeof()
Im Kapitel zu Arrays und Schleifen haben wir die Größe des Arrays in der Schleifenbedingung geschrieben (i < 5
). Dies ist nicht ideal, da es nur für Arrays einer bestimmten Größe funktioniert.
Durch die Verwendung des sizeof()
-Ansatzes aus dem obigen Beispiel können wir jetzt Schleifen erstellen, die für Arrays jeder Größe funktionieren, was nachhaltiger ist.
Anstatt zu schreiben:
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
cout << myNumbers[i] << "\n";
}
Es ist besser zu schreiben:
Beispiel
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
cout << myNumbers[i] << "\n";
}
Try it Yourself »
Beachten Sie, dass Sie in C++ Version 11 (2011) auch die "for-each"-Schleife verwenden können:
Beispiel
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
Try it Yourself »
Es ist gut, die verschiedenen Möglichkeiten zum Durchlaufen eines Arrays zu kennen, da Sie möglicherweise alle in verschiedenen Programmen antreffen.