Quote:
Originally Posted by Xenox3
Eine Array braucht immer eine Element mehr als man eigentlich braucht.
Bsp: int Array[3];
Array[0],Array[1],Array[2],Array[3]
Das ist nun eine Array mit 3 Elementen, da man das letzte nicht benutzen darf/kann.
Somit ist die größe eigentlich 4 (3+1)  hoffe das ist verständlich
Ansonsten MR Smith it's your turn 
|
Das gilt nur für C-Strings, weil da ein 0-Terminator gebraucht wird.
Was du erklärt hast, ist aber doppelt falsch.
Array[3] gibt es nicht.
Du hast ein Array mit 3 Elementen erstellt, wie du schon sagst.
Da der Index aber bei 0 anfängt, ist es eben von 0 bis 2. Gäbe es noch 3, dann hättest du ja ein Element mehr als gewünscht o.ô
Das was MS gesagt hat stimmt. Sizeof ist ein Operator, der zur Compilezeit aufgelöst wird.
Zur Compilezeit kann der Compiler aber nicht wissen, wie groß der Speicherbereich ist, auf den dein Pointer zeigt. Deshalb gilt es hier für die Größe des Pointers, was 4 Bytes ist.
Die Größe eines Arrays erhälst du nur bei sizeof in Verbindung mit einem Array.