Operator pobrania adresu Każda zmienna/obiekt posiada jednoznaczny adres. W językach C i C++ adres ten można pobrać przy pomocy operatora & int *w; /* 'w' jest wskaźnikiem na zmienną typu int */ int a = 5; int b = 5;

w = &a; /* wskaźnik 'w' wskazuje teraz na obszar pamięci zajmowany przez zmienną 'a' */

w = &b; /* a teraz 'w' wskazuje na zmienną 'b' */

Własnoręczne wpisywanie adresu oraz operacje na wskaźnikach (C/C++) Skoro można pobrać adres zmiennych, to można też wpisać go własnoręcznie: typ_danych *wskaźnik = (typ_danych*) 0x556677; // Dowolny adres w pamięci

Można robić także operacje arytmetyczne: wskaźnik = 0x556677 + 0x4;

Uwaga: operacje na adresach typu + - += -= ++ -- zmieniają adres o: liczba * sizeof(typ_danych) // Dla + - += -= sizeof(typ_danych) // Dla ++ --, np. (long*)(adres) ++ = (void*)(adres) + 4, (char*)(adres) ++ = (void*)(adres)+1 i (int*)(adres) + 5 = (void*)(adres) + 5*4 = (void*)(adres) + 20.

Wyłuskanie wskaźnika Obszar wskazywany przez wskaźnik na TYP można interpretować jako zmienną (obiekt) typu TYP. Do odczytywania tej zmiennej służy operator *. Operację pobrania danych za pośrednictwem wskaźnika zwie się wyłuskiwaniem (ang. dereferencing) lub adresowaniem pośrednim (ang.