Ein Datenobjekt mit einem Stern (*) ist ein Zeiger. Also eigentlich nur eine Adresse auf einen Speicherbereich. Man kann sich das eigentlich ganz einfach wie eine Verknüpfung vorstellen.
Um eine Adresse eines Datenobjektes zu bekommen benutzt du den (& Operator).
z.B.
|
C-/C++-Quelltext
|
1
2
3
|
int a = 123;
int *pa = &a;
*pa = 234;
|
pa besitzt jetzt die Adressse von a. Wenn man *pa manipuliert, manipuliert man auch a.
Also würde eine Ausgabe von *pa und a das selbe ausgeben, also ist der Wert 234. Pa besitzt einen EIGENEN SPEICHERBEREICH, der die Adresse von a enthällt. Um mit Zeigern deren Werte zu ändern muss man sie derefernezieren (* Operator) (*pa=x)
Wozu das ganze?
Man kann so sehr veil Kopierarbeit dem Computer ersparen. Nehmen wir mal keine Zahlen sondern irgendwelche Texturen oder noch größere Objekte. So muss der Computer lediglich den Speicheradresse kopieren, der Aufwand ist immer gleich, egal welches Objekt.
@Spike:
a->b() == (*a).b() !!!!!
Ich weiss aber was du damit sagen willst. Der -> Operator derefernziert einen Zeiger (*a) und greift auf das "Strukturellement" b zu. (keine Parmeter) dann: a->b();