Initialisieren einer Struktur



  • folgendes Beispiel kam in meiner Vorlesung (Datenstrukturen + Algorithmen)

    struct datum { int tag;
                   int monat;
                   int jahr; };
    
    struct student { string name;
                     string vorname;
                     datum geburtsdatum;
                     int semester;
                     float note;
                     bool wiederholer; };
    
    student stud1 { „Fuchs“,
                    „Max“,
                    {10, 7, 78},
                    3,
                    1.0,
                    false };
    

    ich habe den Prof. gefragt ob bei student stud1 nicht ein Zuweisungsoperator fehlt bei der Initialisierungsliste

    Er war sich nicht sicher ob nicht beides geht und gab als Aufgabe auf, dass wir uns erkundigen was der ANSI C Standard dazu sagt (abgesehen davon das es rein zeittechnisch nicht möglich ist einen ANSI C Standard innerhalb von einer Woche zu bekommen ohne größere Kosten ;))

    also ich würde mal behaupten da muss ein Zuweisungsoperator stehen - oder geht es auch ohne (glaube ich nicht - hab ich noch nie gesehen - kommt das vielleicht von einem älteren Standard - glaubs zwar nicht, aber glauben ist nicht wissen)?



  • AFAIK muss da einer steh'n



  • abgesehen davon das es rein zeittechnisch nicht möglich ist einen ANSI C Standard innerhalb von einer Woche zu bekommen ohne größere Kosten

    Sorry Vertex, aber willst du uns verarschen? ;)#
    Ich glaub, den gibs sogar hier in der Tutorials Sektion.



  • SeppSchrot schrieb:

    Ich glaub, den gibs sogar hier in der Tutorials Sektion.

    wage ich zu bezweifeln, weil der schweinisch geld kostet.

    mag aber sein, dass der final draft bei den tutorials ist, wuerde mich zwar ein bisschen wundern, waere aber nicht unrealistisch.

    @Vertexwahn:
    praktisch ist:
    http://www.comeaucomputing.com/tryitout/
    da ist der standardkonformste compiler den es momentan gibt und man kann damit code online auf fehler checken lassen. wenn der compiler sagt es geht oder geht nicht, dann ist das mit sehr grosser wahrscheinlichkeit im standard so definiert.



  • Vertexwahn schrieb:

    (abgesehen davon das es rein zeittechnisch nicht möglich ist einen ANSI C Standard innerhalb von einer Woche zu bekommen ohne größere Kosten ;))

    Rein theoretisch könnte ich hier einen Link posten. Aber nur rein theoretisch. Vielleicht passiert sowas mal aus Versehen...

    [edit]
    Ich tippe mal, dass dieser Link illegal ist, da der C Standard Geld kostet. Also ist entweder die Meldung dort falsch und es ist nur der Draft oder es ist illegal. Ich entferne den Link also

    Shade
    [/edit]



  • Wenn das C Code sein soll, dann muss ein = stehen. Allerdings gibt es string in C nicht.



  • > Wenn das C Code sein soll, dann muss ein = stehen. Allerdings gibt es string in C nicht.

    würde es in C++ gehen?



  • Vertexwahn schrieb:

    > Wenn das C Code sein soll, dann muss ein = stehen. Allerdings gibt es string in C nicht.

    würde es in C++ gehen?

    ja, solange man using namepsaces std oder std::string benutzt



  • ich meinte die Initialisierung einer "Struktur-" Variablen mithilfe einer Initialisierungsliste ohne Zuweisungsoperator - geht das?

    also:

    typedef struct {
       int foo;
       int bar;
    } X;
    
    X foo = {1, 1};  // geht
    X bar {1, 1};   // geht nicht - oder?
    

    Der Comeau Compiler im Modus C99 strict sagt mir folgendes:

    "ComeauTest.c", line 9: error: expected a ";" (perhaps on the previous statement)
      X bar {1, 1};   // geht nicht - oder?
            ^
    

    damit ist die frage dann eigentlich schon beantwortet - ein Zuweisungsoperator ist nötig



  • Vertexwahn schrieb:

    typedef struct {
       int foo;
       int bar;
    } X;
    
    X bar {1, 1};   // geht nicht - oder?
    

    nein, das geht nicht, weder in C noch in C++, wieso soll denn das gehen oder warum willst du den Zuweisungsoperator nicht benutzen? Dafür ist das = da.


Anmelden zum Antworten