Array-Initialisierung mit geschweiften Klammern: Das Verhalten des Compilers enthüllen
In der Programmierung das Zuweisen eines Arrays mit geschweiften Klammern, z. B. array[100] = {0} wirft Fragen dazu auf, wie die Werte intern initialisiert werden. Lassen Sie uns in die Zauberei hinter dieser Notation eintauchen.
Magie oder Compiler-Logik?
Entgegen der landläufigen Meinung ist keine Magie im Spiel. Das Verhalten dieses Codes wird durch Programmiersprachenspezifikationen geregelt:
C-Spezifikation (Abschnitt 6.7.8.21): Für nicht spezifizierte Array-Elemente werden Zeiger auf NULL initialisiert und arithmetische Typen (einschließlich char ) werden auf Null gesetzt.
C-Spezifikation (Abschnitt 8.5.1.7): Nicht spezifizierte Array-Elemente werden aggregiert initialisiert.
Leere Initialisierungsliste in C: C unterstützt leere Initialisierungslisten wie array[100] = {};, die alle Elemente des Arrays aggregiert initialisieren .
Vom Compiler generierter Code: Normalerweise generieren Compiler Code, der jedes Element von festlegt das Array auf den angegebenen Wert. Abhängig vom Compiler und den Optimierungseinstellungen kann der Code jedoch variieren.
Weitere Einblicke in das Verhalten des Compilers finden Sie im Assemblercode, der für leere Initialisierungslisten in der zugehörigen Frage generiert wurde: „Seltsame Assembly aus Array 0 -Initialisierung."
Das obige ist der detaillierte Inhalt vonWie werden Arrays in C und C mit geschweiften Klammern initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!