auto Felder können nicht initialisiert werden



  • ich lese gerade ein Buch; der Autor schreibt:
    "Ebenso wenig können Felder der Speicherklasse auto in C initialisiert werden; dies ist nur bei der Speicherklasse static möglich."

    habe gleich einen Versuch gemacht:

    #include <stdio.h>
    
    int main()
    {
    	int Array[]={1,2,3};
    }
    

    mein Compiler hat es schön brav übersetzt - ist das jetzt einfach ein sachlicher Fehler des Autors oder meines Compilers?



  • Kannst du mal dazuschreiben, in welchem Zusammenhang diese Textzeile kommt?

    Nach meinem Wissen kann man jede Variable bei der Deklaration mit einem Wert initialisieren, egal ob die jetzt statisch oder automatisch angelegt wurde (OK, einzelne struct-Element kann man nicht in der struct-Definition schon vorbelegen, aber das dürfte etwas anderes sein).



  • Kannst du mal dazuschreiben, in welchem Zusammenhang diese Textzeile kommt?

    Es kommt im Kapitel Speicherklassen

    "Wichtig zu wissen ist, dass auto-Variablen vom Compiler nicht initialisiert, d. h. mit einem Wert vorbelegt werden. Ebenso wenig können Felder der Speicherklasse auto in C initialisiert werden; dies ist nur bei der Speicherklasse static möglich."

    Anscheinend meint der Autor die Vorbelegung von Variablen mit Initialisierung, was ich etwas verwirrend finde...



  • das hängt vom standard ab. neuere c-compiler und erst recht c++-compiler können das. viele ältere nicht.



  • das hängt vom standard ab. neuere c-compiler und erst recht c++-compiler können das. viele ältere nicht.

    ich beziehe mich immer, wenn nichts anderes angegeben, auf den aktuellen C Standard , also C99 (bin jetzt zu faul die genaue ISO Nummer rauszusuchen)



  • Vertexwahn schrieb:

    "Wichtig zu wissen ist, dass auto-Variablen vom Compiler nicht initialisiert, d. h. mit einem Wert vorbelegt werden. Ebenso wenig können Felder der Speicherklasse auto in C initialisiert werden; dies ist nur bei der Speicherklasse static möglich."

    Meiner Meinung nach schreibt der Autor hier etwas unklar. Wenn er damit meint, dass auto Arrays nicht implizit initialisiert werden, genauso wie normale Variablen, dann hat er Recht. Wenn er aber damit meint, dass auto Arrays nicht explizit initialisiert werden können, dann liegt er falsch.


Anmelden zum Antworten