C++ Array Größe richtig ermitteln?
Hey, Ich lerne grade C++ und habe ein Array (int array[5]...) erstellt. Wenn ich mit sizeof(array) nun die Länge des Arrays abfragen will kommt aber 20 (hab es bereits mit anderen Werten getestet, es sind immer 4er Schritt -> 4*5 also hier). Ist mein Befehl falsch ? Wird für ein Array Element immer ein 4 Byte Bereich reserviert ?
Danke schonmal! :)
3 Antworten
Es sind 4er-Schritte, weil die Größe von "int" 4 Bytes ist. Wenn du also ein weiteres Element hinzufügst, fügst du 4 Bytes hinzu.
Wenn du die Anzahl der Elemente in deinem Array ermitteln möchtest, dann kannst du das wie folgt machen:
int numberOfElems = sizeof(array) / sizeof(int);
Du solltest jedoch bedenken, dass der "sizeof"-Operator zur Kompilezeit ausgewertet wird. Wenn du also nur noch einen Zeiger auf dein Array haben solltest, dann kommst du nicht mehr an die Größe ran.
Daher werden häufig verwaltende Klassen wie "std::vector" verwendet, die die Größe zur Laufzeit speichern.
sizeof( myArray ) liefert die Anzahl der Bytes des Arrays. Du solltest so etwas lieber eine Klasse wie Vector benutzen.
Ja. Offensichtlich belegt ein int 4 Byte Speicherplatz.
Die Anzahl der Elemente wird (angeblich) mit size() ermittelt (http://www.cplusplus.com/reference/array/array/size/)
Sonst kannst du immer noch
sizeof(array)/sizeof(array[0])
berechnen (nach einem Vorschlag bei stackoverflow)