pointer zeigt worauf?
-
Ich hätte eine Frage zu Pointern, deren Verweisen.
Ich habe es mir so notiert, dass je nach Dimension des Pointers immer eine bestimmte Anzahl von Verkettungen zurück gesprungen wird.
Z.B. bei einem int ***aa Pointer würde bei **a 2 verkettungen zurückgesprungen werden. Ist das richtig, vom Denken her?
Ich würde bspw. tippen, dass bei **ee hier auf die Adresse von cc verwiesen wird. Bei *ee würde er auf dd zeigen und nicht auf &cc, da &cc 2 Sprünge entfernt ist. Ist diese Denkweise falsch? Es geht mir halt darum zu unterscheiden auch wenn die Adressen gleich sind, ob ich nun 2 Sprünge gemacht habe oder nur einen.
Bsp:
int aa=0xab; int *cc = &aa; int **dd=&cc; int ***ee=ⅆ std::cout << cc << std::endl; std::cout << dd << std::endl; std::cout << ee << std::endl; std::cout << &cc << std::endl; std::cout << *dd << std::endl; std::cout << &dd << std::endl; std::cout << **ee << std::endl;//geht 2 pointer"-verkettungen" zurück std::cout << *ee << std::endl;//geht 1 pointer"-verkettung" zurückDanke!
mfg
-
Ich würde bspw. tippen, dass bei **ee hier auf die Adresse von cc verwiesen wird. Bei *ee würde er auf dd zeigen und nicht auf &cc, da &cc 2 Sprünge entfernt ist. Ist diese Denkweise falsch?
Doch, das ist richtig.
-
Hm - also bei den Formulierungen, die man bei pointern verwendet kann man schnell aneinander vorbeireden

Wenn du ee zweimal dereferenzierst erhälst du die Speicheradresse von aa und nicht von cc, welches aber natürlich der Wert von cc ist.
Also
**ee==&aaoder auch
**ee==ccDie Adresse von cc wäre ja &cc. Die erhälst du wenn du ee nur einmal dereferenziertst.