W programowaniu komputerowym operator dereferencyjny, znany również jako operator indeksu, działa na zmiennej wskaźnikowej i zwraca wartość położenia lub wartość l, którą wskazuje w pamięci. W języku programowania C operator deferencji jest oznaczony gwiazdką ( * ).
Na przykład w C możemy zadeklarować zmienną x, która zawiera wartość całkowitą, i zmienną p, która przechowuje wskaźnik do wartości całkowitej w pamięci:
int x; int * p;
W tym przypadku gwiazdka mówi kompilatorowi: „ p nie jest liczbą całkowitą, ale raczej wskaźnikiem do lokalizacji w pamięci, która zawiera liczbę całkowitą”. Tutaj nie jest to dereferencja, ale część deklaracji wskaźnika.
Teraz możemy ustawić p na lokalizację przydzieloną dla wartości x za pomocą operatora &, co oznacza „adres”.
p = & x;
Ta akcja mówi kompilatorowi: „Adres w pamięci, na który wskazuje p, jest adresem przydzielonym dla liczby całkowitej x ”.
Aby to zilustrować, jeśli ustawimy wartość x na 1 za pomocą metody konwencjonalnej i wydrukujemy wartość, wyjście będzie równe 1 .
x = 1; printf ("% d", x);
Możemy jednak również zmienić wartość x, odwołując się do p . Robimy to za pomocą gwiazdki:
* p = 2; printf ("% d", x);
A wyjście zmienia się na 2 .
Innymi słowy, po zadeklarowaniu p jako wskaźnika tego samego typu co x, a następnie ustawieniu na wartość x, możemy używać zamiennie x i * p . Ponieważ oba dotyczą tej samej rzeczy, zmiana wartości jednego zmieni wartość drugiego.
Wskaźnik, Warunki programowania, Zmienna