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!
-
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.