Doppelzeiger
-
Danke zu 6 und 9 , leider ist die ja eher eine direkte Antwort und keine erklärung und somit sitze ich bei 7+8 immer noch auf dem Schlauch, da ich in Zukunft solche Pointerproblematiken gerne selber lösen würde, wäre es gut, wenn eine kleine Erklärung dabei wäre, danke :):)
EDIT:// oh den zweiten Beitrag habe ich erst nach diesem Beitrag gelesen.
Heißt das , wenn da steht *pa=&pb, dass der Zeiger pa die Adresse von pb zugewiesen bekommt ?
-
Broderik schrieb:
Heißt das , wenn da steht *pa=&pb, dass der Zeiger pa die Adresse von pb zugewiesen bekommt ?
Wenn das Sternchen Teil einer unvollständigen Typangabe im Zuge einer Deklaration ist: ja.
-
Broderik schrieb:
Heißt das , wenn da steht *pa=&pb, dass der Zeiger pa die Adresse von pb zugewiesen bekommt ?
Nein, das heißt, dass der Wert an *pa (also von a) nun die Adresse von pb enthält.
-
Dies bezieht sich auf den Ausdruck '*pa = &pb'
Du meinst wohl eher:
int* pa = &pb;
Dann bekommt der Wert der Variablen pa die Adresse von pb zugewiesen.
-
Also erstmal danke, nur etwas verwirrend, wenn Ihr bei euren Erklärungen euch nicht mal sicher seid
^^ Trotzdem danke :):)
-
Wenn man aber die Definitionen von oben nimmt, meckert der Compiler, da er einem int keine Adresse zuweisen mag.
-
Broderik schrieb:
Also erstmal danke, nur etwas verwirrend, wenn Ihr bei euren Erklärungen euch nicht mal sicher seid
^^ Trotzdem danke :):)
Deine Angaben sind ja auch nicht ausreichend.
Bei der Definition
int *pa
ist pa ein Zeiger und *pa ein int.
Wenn du da gleich eine Zuweisung machstint *pa = &a;
wird der Zeiger initialisiert (mit der Adresse von a). Aufgeteilt in zwei Zeilen wäre das:int *pa; pa = &a;
Bei dem Ausdruck
*pa = &a;
hast du aber auf der linken seite ein int und auf der rechten Seite eine Adresse. Das passt nicht.Bei deiner Erklärung
Broderik schrieb:
..., dass der Zeiger pa die Adresse von pb zugewiesen bekommt
wäre das
pa = &pb;
Passt bei dir aber auch nicht, das pa und pb beide vom Type int* (Zeiger auf int) sind.
&pb ergibt aber ein int** (Zeiger auf Zeiger auf int).
-
DirkB schrieb:
Wenn man aber die Definitionen von oben nimmt, meckert der Compiler, da er einem int keine Adresse zuweisen mag.
In einer abstrakten Sicht wie in C ist das auch so, auf low level Ebene gibt es da keine Probleme. Dennoch ist meine Aussage deshalb nicht unwar, wenn man versteht, was die Zuweisung zur Laufzeit erwirken würde.
-
Weiß vielleicht einer, wie ich die Beziehung zwischen den Variablen a und b sowie den Zeigern pa, pb und ppa grafisch darstelle?
-
Hallo123 schrieb:
Weiß vielleicht einer, wie ich die Beziehung zwischen den Variablen a und b sowie den Zeigern pa, pb und ppa grafisch darstelle?
Naheliegenderweise mit einem Pfeil. Oder was möchtest du genau wissen?