Wskaźnik (ang. pointer) w programowaniu, szczególnie w językach C i C++, to zmienna, która przechowuje adres komórki pamięci. Taki adres "wskazuje", gdzie w RAM znajdują się dane (np. inna zmienna). Dzięki temu można najpierw poznać położenie danych, a następnie je odczytać lub zmienić przez dereferencję.
Odpowiedź "zmienną, która przechowuje adres komórki pamięci" jest poprawna, bo oddaje istotę wskaźnika: przechowywanie adresu, a nie zwykłej wartości użytkowej (jak licznik czy indeks).
Pozostałe propozycje opisują inne pojęcia, które bywają mylone ze wskaźnikami:
- "zmienną, która przechowuje indeks elementu w tablicy" – indeks to liczba porządkowa/offset używana w zapisie typu tablica[3]. Indeks nie jest adresem, tylko wartością całkowitą służącą do wybrania elementu.
- "zmienną, która przechowuje liczbę elementów w tablicy" – to opis rozmiaru (np. długości) tablicy/bufora. Rozmiar może pomagać w pętli, ale nie wskazuje miejsca w pamięci.
- "zmienną, która jest często używana i trzymana w rejestrze" – umieszczenie zmiennej w rejestrze (lub w pamięci) jest kwestią optymalizacji kompilatora/architektury. Nie stanowi definicji wskaźnika; wskaźnik może, ale nie musi, być w rejestrze.
W praktyce rozróżniaj: adres (gdzie to leży w pamięci) vs wartość (co tam jest). To rozróżnienie jest kluczowe przy pracy z dynamiczną alokacją, przekazywaniem argumentów do funkcji i implementacją struktur danych.