anfänger frage



  • hallo, kann mir jemand den unterschied erklären warum ich bei der unteren Zeile das kaufmanns und ( & ) brauche und oben nicht ( bitte für anfänger verständlich ).

    Desweiteren, wie würde das aussehen ohne diesen "->" also mit termin.name ( der pfeil ist für mich neu )

    struct termin // damit die 2 Zeilen nicht ganz in der Luft hängen
    {
    char name;
    int jahr;
    int xxx
    ....
    ....
    };
    
    scanf("%s", termin->name); // ohne & - warum?
    scanf("%d", &termin->jahr); // mit & - warum?
    

    mfg



  • Also eigentlich muss (damit es einigermassen sinnig korrekt ist) oben auch ein & stehen.

    Und eigentlich kann termin->name auch nicht funktionieren, da termin keine Instanz ist.

    Also eigentlich solltest Du uns nicht zu falschem Code fragen warum er so aussieht 😉



  • der code ist aus einer musterlösung.



  • lies dir ein anständiges tutorial durch.



  • das hier z.B. http://www.pronix.de/pronix-735.html

    MfG

    GPC



  • RobRoy882 schrieb:

    der code ist aus einer musterlösung.

    Dann ist das Muster Schrott. Mit %s wird ein String spezifiziert, termin->name ist aber nur ein einzelnes Zeichen und kein String. Korrekt wäre sowas

    struct termin
    {
    char name[20]; // oder wie lang auch immer
    // oder
    char* name; // und den Zeiger dann irgendwo mit genuegend Speicherplatz initialisieren
    };
    

    Warum nun einmal mit & und einmal ohne? scanf erwartet für die Parameter grundsätzlich Zeiger, damit an diesen Stellen geschrieben werden kann. Die Funktionen stammen halt noch aus C Zeiten und da gibt es keine Referenzen. Und termin->name ist ja bereits ein Zeiger bzw. wird zu einem implizit umgewandelt (falls als Array). Dort ist & deshalb nicht notwendig. termin->jahr hingegen ist ein int. Du musst deshalb erst einen Zeiger darauf erzeugen, also & benutzen.



  • ahhhh super danke!!

    das ist mal ne antwort.

    danke dir!


Anmelden zum Antworten