W zapisie double *x; występują dwa kluczowe elementy: typ bazowy double oraz deklarator z operatorem *. W C++ operator * umieszczony w deklaracji (pomiędzy typem a identyfikatorem lub bezpośrednio przy typie) oznacza, że deklarowana nazwa jest wskaźnikiem. Dlatego x nie przechowuje wartości zmiennoprzecinkowej, tylko adres w pamięci, pod którym może znajdować się obiekt typu double.
Odpowiedź "wskaźnik." jest poprawna, bo dokładnie opisuje rezultat deklaracji: zmienną-wskaźnik do double (czyli typ "pointer to double"). W praktyce taki wskaźnik bywa używany np. do przekazywania danych przez adres, pracy z tablicami, buforami i dynamiczną alokacją.
- "zmienna rzeczywista." byłaby poprawna dla deklaracji w rodzaju double x;, gdzie nie ma operatora *. Tutaj jednak * zmienia znaczenie deklaratora na wskaźnik.
- "zmienna całkowita." jest niepoprawna, bo typ double nie jest typem całkowitym (takim jak int), tylko zmiennoprzecinkowym.
- "parametr formalny typu rzeczywistego." dotyczy sytuacji w nagłówku funkcji (np. void f(double x)). Sama linia double *x; nie deklaruje parametru, tylko zmienną (najczęściej lokalną lub globalną, zależnie od miejsca w kodzie).
Wskazówka egzaminacyjna: odróżniaj * w deklaracji od * w wyrażeniu. W deklaracji oznacza "wskaźnik do", a w wyrażeniu (np. *x) oznacza dereferencję, czyli dostęp do wartości przechowywanej pod adresem.