C ++ Hinweise: Die Array-Initialisierung hat eine schöne Liste über die Initialisierung von Arrays. Ich habe ein
int array[100] = {-1};
Erwarten Sie, dass es voll mit -1 ist, aber es ist nicht so, nur der erste Wert ist und der Rest sind 0 mit zufälligen Werten gemischt.
Der Code
int array[100] = {0};
funktioniert einwandfrei und setzt jedes Element auf 0.
Was fehlt mir hier? Kann man es nicht initialisieren, wenn der Wert nicht Null ist?
Und 2: Ist die Standardinitialisierung (wie oben) schneller als die übliche Schleife durch das gesamte Array und weist einen Wert zu oder macht sie dasselbe?
{0}
ist kein Sonderfall für Strukturen oder Arrays. Die Regel ist, dass Elemente ohne Initialisierer wie 0
für einen Initialisierer initialisiert werden. Wenn verschachtelte Aggregate vorhanden sind (z. B. struct x array[100]
), werden Initialisierer in der Reihenfolge "Zeilen-Haupt" auf die Nicht-Aggregate angewendet. Klammern können dabei optional weggelassen werden. struct x array[100] = { 0 }
ist gültig in C; und gültig in C ++, solange das erste Mitglied von als Initialisierer struct X
akzeptiert 0
.
{ 0 }
ist in C nicht besonders, aber es ist viel schwieriger, einen Datentyp zu definieren, der damit nicht initialisiert werden kann, da es keine Konstruktoren gibt und daher nicht verhindert werden kann 0
, implizit konvertiert und etwas zugewiesen zu werden .