Übergabe einer Pointeradresse an einen Pointer



  • Ich habe das Problem, dass ich einem Pointer die Adresse eines anderen Pointers nicht übergeben kann.

    int *b;
    int *c;
    int d=5;
    
    b=&d;
    cout << b;
    c=&b;
    cout << "\n" << c;
    

    Es kommt die Fehlermeldung:
    error C2440: '=': 'int **__w64 ' kann nicht in 'int *' konvertiert werden
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    Ich kann damit nicht anfangen, vorallem weil ich mir einbilde, dass es eben schon einmal ging.
    Oder kann ich einen Pointer auf einen anderen Pointer nur so zeigen lassen:

    c=b;
    cout << "\n" << c;
    

    Ich bin ratlos. Das muss doch funktionieren!!!



  • sarah1986 schrieb:

    [cs]
    int *b;
    int ******c;
    int d=5;

    b=&d;
    cout << b;
    c=&b;
    cout << "\n" << c;[/cs]

    Mist das fette kommt nicht rüber^^ also der Typ muss int** sein. Ein Zeiger, der auf ein int* zeigt



  • Ist das immer so, wenn ich einen Zeiger auf die Adresse eines anderen Zeigers zeigen lass, dass ich "int ** Pointer" schreiben muss?



  • Pointer auf Pointer sehen immer so aus:

    T **p=0;
    


  • Einen Zeiger deklariert man folgendermaßen(AChtung ich mache das jetzt von rechts nach links.

    1. Name der Variable: pMyPointer
    2. ein Stern davor weils nen Zeiger ist: *pMyPointer
    3. den Typ angeben, worauf der Zeiger zeigt:
    int pMyPointer zeigt auf einen integer
    int pMyPointer zeigt auf einen integer-Zeiger
    int pMyPointer
    zeigt auf einen Zeiger, der auf einen integer-Zeiger zeigt



  • so ist das wenn ich den Pointer auf DIE ADRESSE EINES POINTERS zeigen lasse.
    Wenn ich einen Pointer auf einen Pointer zeigen lasse sieht das so aus:

    c=b
    cout << c;
    

    Bei beiden Zeilen kommen aber unterschiedliche Ausgaben.
    Bei dem von eben, wo ich nicht weiterkam, kam die Adresse von dem Pointer b raus (also die eigene Adresse von dem Pointer).
    In den zwei Zeilen hier (bei der Deklaration mit nur 1 Stern) kommt die Adresse der Variablen d raus.
    Habe ich alles ausprobiert.



  • c=b
    

    das klappt nur, wenn beide Variablen vom selben Typ sind. Angenommen das ist so, dann wird die Adresse wo b rauf zeigt, nach c kopiert, sodass c und b beide auf dasselbe Zeigen.



  • Anscheinend hast du das Pointer auf Pointer Ding noch nicht so geschnallt, lies doch mal Abschnitt 7 hiervon.



  • Da hat doch GPC gerade einen prima Artikel zu verfaßt: http://www.c-plusplus.net/forum/viewtopic-var-t-is-124532.html

    Edit; Grummel, grummel, zu langsam - und nur weil ich versucht habe, meine Französischkenntnisse aus den Untiefen meiner Vergeßlichkeit hervorzukramen. 😉


Anmelden zum Antworten