Wskaźnik to zmienna, która przechowuje adres innej zmiennej w pamięci, a nie jej zwykłą wartość. W językach C i C++ wskaźniki są oznaczane znakiem * przy deklaracji typu.
Przykład
int zmienna1 = 158;
int *zmienna2 = &zmienna1;
W tym kodzie:
- zmienna1 jest zwykłą zmienną typu int i przechowuje wartość 158,
- zmienna2 jest wskaźnikiem na typ int, czyli może przechowywać adres zmiennej typu int,
- operator & oznacza pobranie adresu zmiennej,
- zapis &zmienna1 oznacza: „adres zmiennej zmienna1”.
Dlatego do zmienna2 zostanie przypisany adres zmiennej zmienna1, a nie liczba 158.
Operator * i operator &
Wskaźniki często sprawiają trudność, ponieważ znak * ma różne znaczenia zależnie od miejsca użycia:
int *wsk;
Tutaj * oznacza deklarację wskaźnika.
*wsk
Tutaj * oznacza odwołanie się do wartości znajdującej się pod adresem zapisanym we wskaźniku, czyli dereferencję.
Operator & pobiera adres zmiennej:
int liczba = 10;
int *adres = &liczba;
Najważniejsze do zapamiętania
int x = 158;— zmiennaxprzechowuje wartość liczbową.int *p = &x;— wskaźnikpprzechowuje adres zmiennejx.*p— oznacza wartość znajdującą się pod adresem przechowywanym wp, czyli w tym przypadku158.
Na egzaminie warto odróżniać wartość zmiennej od adresu zmiennej.