C Unterschied zwischen Pointern"*" und "->" (weiß nicht wie das heißt)

Zeboo

Lt. Commander
Registriert
Juli 2008
Beiträge
1.562
Hallo. Ich sehe immer öfters diese tolle "->" Zeichen in C Programmen. Zuerst dachte ich das das ist ja quasi das gleiche wie ein "*". Aber so einfach ist es dann doch nicht.

1.) Wie heißt in C der Fachbegriff für die "->" Funktion?
2.) Hat jemand kleine sinnvolle Beispiele wo man sowas verwenden sollte, statt den Pointer? Bzw. was der Sinn der Sache ist

Vielen Danke

Gruß
 
Wenn du eine Struktur hast, greifst du auf deren Member mit dem punktoperator zu, zb so: struktur.member = 7;
Hast du allerdings einen Zeiger auf eine Struktur, müsste man diesen erst dereferenzieren, um dann mit dem Punktoperator den Member zu bekommen.
Also in etwa so (*struktur).member = 7;
Das ist unnötig umständlich, deshalb gibt es bei Zeigern auf Strukturen den Pfeiloperator, das sieht dann so aus
struct bla *struktur;
struktur->member = 7;

Hoffe, das erklärt die Sache.
 
Der -> Operator ist einfach nur eine verkürzte Schreibweise.

Wenn man auf ein Attribute eines Objekts zugreifen wollte, aber nur einen Zeiger auf das Objekt hat, müsste man folgendes benutzen:
Code:
(*objekt).attribute

Die Klammern sind unbedingt notwendig, denn ansonsten würde man das Attribut dereferenzieren und nicht das Objekt. Da das aber unschön zu lesen/schreiben ist, hat man den -> Operator eingeführt und kann dann folgendes schreiben:

Code:
object->attribute
 
Kann ich den beiden oberen Posts nur zustimmen

MFG Technoboy
 
Zurück
Oben