Ü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=bdas 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.
