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 machst int *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?


  • Mod

    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?


Anmelden zum Antworten