Arrays initialisieren
-
Hab gerade folgenden Streit mit jemandem:
int a[50] = {0}
initialisiert seiner Meinung nach das ganze Array mit 0.
Meiner Meinung nach ist das Zufall, weil es mit = {1} ja
auch nicht mit 1 aufgefüllt wird.
= {0} sei aber ein "Spezialfall", was ich leider nicht widerlegen kann,
da das Feld ja tatsächlich mit Nullen gefüllt wird.Würde gern mal eure Meinung hören.
Jockel
-
initialiesierst du das erste Element eines Arrays so werden die weiteren Elemente, solange noch welche vorhanden sind, mit dem Default-Wert 0 belegt.
-
int a[50] = {0}
geht soweit ich weiss nur beim ms vc++..
-
In VC++6 initialisiert er so das erste Element mit dem angegebenen Wert (in deinem Beispiel also 0, geht aber auch mit z.B. 1) und setzt alle anderen auf 0.
Inwiefern das allerdings standardkonform ist, weiß ich nicht.
-
Das ist Standard.
-
Bin ich scheinbar im Unrecht.
Allerdings kann ich dann nicht nachvollziehen, warum man
ein Array dann nicht mit einer beliebigen Zahl initialisieren kann?Jockel
-
Jockelx schrieb:
Allerdings kann ich dann nicht nachvollziehen, warum man
ein Array dann nicht mit einer beliebigen Zahl initialisieren kann?Kannst Du, solange es Null ist.
(You can have any color you like as long as it's black.)
-
Mein letzter Beitrag war eigentlich auch blödsinn.
Bei = {1,2,3} muss der Kompiler ja auch wissen, womit der Rest
aufgefüllt wird!Okay, danke.
Thema ist für mich erledigt.Jockel
-
Allerdings kann ich dann nicht nachvollziehen, warum man
ein Array dann nicht mit einer beliebigen Zahl initialisieren kann?Ganz einfach:
wenn eine Initializer-List weniger Einträge hat, als das zu initialisierende Array Elemente besitzt, dann werden alle restlichen Elemente des Arrays "default-initialized". Was genau "default-initialized" bedeutet hängt vom Typ des Objekts ab. Für benutzerdefinierte Typen wird der Standardkonstruktor aufgerufen. Andere Typen werden mit 0 initialisiert.