Zeiger-> nachfolger ?
-
hi,
was hat denn "->" bei den zeigern genau zu bedeuten? eine art zuweisung?
struct knoten
{
int data; // Nutzdaten
knoten* next; // Ort des nächsten Knotens
};knoten push_front (knoten* anfang, int wert)
{
knoten* tmp = new knoten;
tmp -> data= wert
tmp -> next = anfang; // Nachfolger ist vorheriger Erster
return tmp; // neuer Anfang ist Ergebnis
}also würde bei tmp ->next der Zeiger tmp, den Wert ?? / die Adresse ?? vom zeiger next annehmen ?
-
Hallo,
damit greifst du auf den Inhalt des Elementes, welches auf '->' folgt, zu. Zeiger
muessten, bevor man auf den Inhalt auf den sie zeigen zugreifen kann,
dereferenziert werden, was normalerweise mit dem '*'-Op geloest wird. Mit dem
'->' spart man sich einwenig Tipparbeit. Es ist die Alternativschreibweise zu(*my_pointer).element //statt my_pointer->element
mfg
v R
-
A -> B ist gleichbedeutend mit (*A).B (1)
Das heißt, dass A auf ein Objekt vom Typ einer Klasse zeigt, und B eine Komponente dieser Klasse ist.tmp->next = anfang bedeutet also nichts anderes, als dass dem Element next des knoten-Objektes, auf das tmp zeigt, der momentane Wert von anfang zugewiesen wird.
(1) Das stimmt so nur, wenn A ein Zeiger ist, operator-> kann nämlich überladen werden. Allerdings sollten solche Überladungen normalerweise sicherstellen, dass die obige Identität erhalten bleibt.
-
wenn du ein struct hast greifst du mit dem .-operator auf die einzelnen members zu...
wenn du eine zeiger auf eine struct hast musst du den erst dereferenzieren um auf die members mittels punktoperator zugreifen zu können
struct knoten { int data; // Nutzdaten knoten* next; // Ort des nächsten Knotens }; knoten* pk=new....; //zeiger auf einen knoten knoten k; k.data=.... //zugriff auf member data des knoten k (*pk).data=....// sieht scheisse so aus einfacher ist dann pk->data=....; //ist das selbe wie (*pk).data nur besser zu lesen
[edit]
oh man war ich diesmal lahm...
[/edit]
-
scube schrieb:
hi,
was hat denn "->" bei den zeigern genau zu bedeuten? eine art zuweisung?
struct knoten
{
int data; // Nutzdaten
knoten* next; // Ort des nächsten Knotens
};knoten push_front (knoten* anfang, int wert)
{
knoten* tmp = new knoten;
tmp -> data= wert
tmp -> next = anfang; // Nachfolger ist vorheriger Erster
return tmp; // neuer Anfang ist Ergebnis
}also würde bei tmp ->next der Zeiger tmp, den Wert ?? / die Adresse ?? vom zeiger next annehmen ?
Nein, das Element 'next' des Objektes 'tmp' vom Typ 'knoten' zeigt danach
auf das Objekt 'anfang'mfg
v R
-
vielen dank für eure antworten.
zeiger sind wie ihr gemerkt habt nicht gerade mein spezialgebiet.
-