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 listeist, 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.
Beistruct 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'.*vorletzterwird 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.