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 0fü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 Xakzeptiert 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 .