Problem polegający na tym, że robisz coś takiego jak &&a;
, to pytanie o "adres adresu a
".
To nie ma sensu. Możemy uzyskać adres a
, ale to nie daje nam zmiennej, którą możemy wziąć pod adres. To po prostu daje nam wartość wskaźnika. Dopóki ta wartość nie zostanie gdzieś zapisana, nie możemy wziąć jej adresu.
Jeśli masz kod taki jak 2+2
, wynik również nie ma adresu. Jest to tylko wartość 4, ale nie została jeszcze nigdzie zapisana, więc nie możemy wziąć adresu. Po zapisaniu w zmiennej int
możemy pobrać adres tej zmiennej.
Zasadniczo problemem jest różnica między wartościami i zmiennymi. Wartość to po prostu liczba (lub znak lub inne dane). Zmienna jest miejscem w pamięci, w którym przechowywana jest wartość. Zmienna ma adres, ale wartość nie.
W C++ - mów, jest to różnica między wartościami r i l. Wartość r jest zasadniczo tymczasowa, zwykle jest wartością zwracaną przez inną operację (taką jak operator &
w twoim przypadku), ale nie została jeszcze nigdzie zapisana.
Po zapisaniu w zmiennej otrzymasz wartość l, a wartości l mają adres, który możesz wybrać.
Tak, potrzebujesz dwóch oddzielnych instrukcji. Najpierw bierzesz adres, a potem gdzieś go przechowujesz. A potem możesz wziąć adres tego "gdzieś".
Dlaczego uważasz, że potrzebujesz wskaźnika do wskaźnika, w tym przypadku? – SingleNegationElimination
możliwy duplikat [Jak wskaźnik do wskaźników działa w C?] (Http://stackoverflow.com/questions/897366/how-do-pointer-topointpoint-work-in-c) –
@Jens Gustedt, to nie jest duplikatem. Powiązane pytanie pyta o wskaźniki w ogóle. To pytanie dotyczy konkretnego przypadku. –