W kodzie zadeklarowano zmienną znak typu char o wartości 'A'. Następnie zadeklarowano wskaźnik p typu char* i zainicjalizowano go wyrażeniem &znak.
Operator & w tym kontekście jest operatorem pobrania adresu (address-of). Jego wynikiem jest adres pamięci, pod którym przechowywana jest dana zmienna. Dlatego poprawne jest stwierdzenie, że do p zostaje przypisany adres zmiennej znak.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- "Wartość zmiennej znak." Wartością jest 'A' (typ char). Wskaźnik char* nie ma przechowywać samego znaku, tylko adres miejsca w pamięci. Przypisanie "p = znak" (bez &) prowadziłoby do niezgodności typów.
- "Typ zmiennej znak." Typ (char) jest informacją znaną kompilatorowi na etapie kompilacji, nie jest "przypisywany" do zmiennej w czasie wykonania. Do zmiennych przypisuje się wartości, a nie typy.
- "Adres wskaźnika p." Adres samego wskaźnika uzyskuje się przez &p, a nie przez &znak. To częste pomylenie: &znak wskazuje na zmienną, a &p wskazuje na wskaźnik.
Wskazówka egzaminacyjna: rozróżniaj pary &zmienna (adres zmiennej) i *wskaznik (wartość pod adresem). W tym zadaniu pytanie dotyczy inicjalizacji wskaźnika, więc szukasz odpowiedzi o adresie.