Pointer wirrwarr !
-
Hallo,
hab hier ein Code vor mir liegen und versteh ein Teil davon nicht so ganz:-ich deklariere einen Pointer in main: int *pointer
-Ich rufe in main() eine Funktion auf und übergebe den Pointer: funktion(&pointer)
-Die Funktion übernimmt den Pointer folgendermaßen: void funktion(int **pointer)Was genau passiert da ? Ist das Pointer auf Pointer ? Wieso wird der Pointer mit dem Adressoperator übergeben und wieso übernimmt die Funktion den Pointer mit 2x "*" ?
Vielen Dank für Eure Hilfe.
KayZee.
-
type* x;
ist ein Zeiger auf typeWenn type jetzt int* ist, dann ist
type* also int** und somit ein Zeiger auf einen Zeiger auf intwenn du weisst, wozu man zeiger braucht, sollte auch klar sein was man mit Zeiger auf Zeiger machen kann (by reference übergabe eines Zeigers).
-
Ein Zeiger kann ja - um es vereinfacht auszudrücken - die Adresse einer Variablen speichern.
Ein Zeiger selbst ist aber auch nur eine Variable, die demzufolge eine Adresse hat. Aus diesem Grund kann man auch die Adresse einer Zeigervariablen in einem anderen Zeiger speichern, was dann ein Zeiger auf einen Zeiger oder kurz ein Doppelpointer ist.Mit int **A deklarierst du einen solchen Pointer, der die Adresse eines int-Pointers speichern kann.
Wenn int *p also ein int-Zeiger ist, dann bekommst du dessen Adresse logischerweise mit &p, was dann einen int-Doppelpointer ergibt.
Grüße
Jens