Kompilator zajmuje się tłumaczeniem zmiennych w naszym kodzie na lokalizacje w pamięci używane w instrukcjach maszyn. Lokalizacja zmiennej wskaźnika zależy od tego, gdzie jest zadeklarowana w kodzie, ale programiści zwykle nie muszą zajmować się nią bezpośrednio.
Zmienna zadeklarowana wewnątrz funkcji znajduje się na stosie lub w rejestrze (o ile nie jest zadeklarowana jako statyczna).
Zmienna zadeklarowana na najwyższym poziomie znajduje się w sekcji pamięci na górze programu.
Zmienna zadeklarowana jako część dynamicznie przydzielanej struktury lub tablicy występuje na stercie.
Operator "&" zwraca lokalizację pamięci zmiennej, ale w przeciwieństwie do operatora "*", nie można jej powtórzyć.
Na przykład * * * i pobiera wartość pod adresem * * i, która jest wartością pod adresem * i, która jest wartością przechowywaną w i, którą kompilator wyszukuje w jaki sposób znaleźć.
Ale & & Nie skompiluję. & i jest liczbą, która jest miejscem w pamięci używanym przez kompilator dla zmiennej i. Ta liczba nie jest przechowywana nigdzie, więc nie ma sensu.
(Zauważ, że jeśli & i jest używany w kodzie źródłowym, a następnie kompilator nie może przechowywać I w rejestrze).
Retagged postu. Rubin? Daj spokój. –
W obecnej formie pytanie nie ma większego sensu. –
Prawie odpowiedziałem na twoje pytanie, a kilka innych pokazało ci przykłady. Czy jest coś jeszcze, czego potrzebujesz? –