Nie dają one jednak pełnej kontroli nad pamięcią i uniemożliwiają wykorzystanie wskaźników do szybkiego poruszania się po tablicy.
Definicja wskaźnika na obiekt lub (prostą) zmienną W językach C/C++ definicja wskaźnika jest instrukcją składającą się z nazwy typu zmiennej, znaku * (używanego też w innym kontekście jako operator wyłuskania) i identyfikatora nowo tworzonego wskaźnika: TYP * zmienna; Przykłady: int* p; // 'p' jest zmienną wskaźnikową przechowującą adres liczby typu 'int' double* q; // 'q' jest zmienną wskaźnikową przechowującą adres liczby typu 'double'
struct X; // deklaracja struktury X* pp; // definicja wskaźnika na obiekt/strukturę typu X W języku C tradycyjnie znak * umieszcza się tuż przy nazwie zmiennej (co uwypukla nazwę typu, na który wskazuje wskaźnik); w C++ tuż przy nazwie typu (co uwypukla nazwę zmiennej i jej typ). Obydwie możliwości są jednak poprawne dla każdego z tych języków. int *p; // zapis w stylu języka C int* p; // ta sama instrukcja w stylu języka C++ W przypadku definiowania kilku zmiennych w jednej linii, wskaźnikami są tylko te, przy których postawiony został znak *: int *a, *b, c; //a, b - wskaźniki na typ int, c - zmienna typu int