frage zu zeigern



  • Guten Abend,
    wollt mal fragen was der Unterschied zwischen den beiden sachen ist ,wegen den Sternen.

    struct liste* last

    und

    *vorletzter

    Danke!


  • Mod

    Das Erste macht, dass last ein Zeiger auf struct liste ist, das Zweite dereferenziert einen Zeiger (d.h. greift auf das zu, auf das der Zeiger zeigt).

    Wenn du solche Fragen stellen musst, brauchst du ganz dringend ein gutes Lehrbuch. Hier im Forum findest du Buchtipps (und Warnungen).



  • Dazu sei angemerkt, dass sowohl

    struct liste* last;
    

    als auch

    struct liste *vorletzter;
    

    beides Zeiger auf die struct liefern.

    ⚠ Bei

    struct liste* last, erster;
    

    ist nur last ein Zeiger, da sich der * auf den Bezeichner (Variablenname) bezieht. erster ist eine struct.



  • Vielen Dank 🙂



  • Du musst hierbei deklarative Phase und definierende Phase unterscheiden.

    struct liste* last;
    

    ist eine Deklaration (Typbekanntmachung) und tritt pro Bezeichner und Sichtbarkeitsbereich genau einmal auf;
    Hierbei dient '*' zur Einführung des Bezeichners als 'Zeiger auf Typ', also 'last' wird deklariert als Zeiger auf 'struct liste'.

    *vorletzter
    

    wird meist als Ausdruck oder Teil davon gebraucht und trägt keinen deklarativen Charakter, die Deklaration ist vorher schon passiert;
    Hier dient '*' als Dereferenzierung, der Bezeichner muss also zu einem Zeiger oder Array gehören; Dereferenzierung heisst hier einfach nur, dass du Daten, auf die der Zeiger verweist, entsprechend seines Typ zurückerhälst und lesend und schreibend benutzen kannst.


Anmelden zum Antworten