Kazalci predstavljajo spremenljivke, katerih zaloga vrednosti so pomnilniški naslovi. To omogoča, da obravnavamo naslov pomnilniške lokacije kot spremenljivko.
int y = 5;
int *ykaz; // kazalec na pomnilniške lokacije, kjer so shranjena cela števila
| Ime spremenljivke | vrednost | naslov pomnilniške lokacije |
| y | 5 | 445 |
ykaz = &y; // prireditev naslova, kjer je shranjena vrednost spremenljivke y (to je vrednost 5)

Slika 1: Prireditev naslova
int *ykaz = NULL; // inicializacija vrednosti kazalca - kazalec ne kaže nikamor

Slika 2: Ozemljitev kazalca
int y1 = *ykaz; // dereferenciranje kazalca

Slika 3: Dereferenciranje kazalca
ykaz = new int; // generiranje novega kazalca - alocira se prostor za novo pomnilniško lokacijo, na katero kaže kazalec
primer: double *ykaz;
ykaz = new double(5.16); // dodelitev pomnilnika in inicializacija vrednosti

Slika 4: Generiranje novega objekta
delete ykaz; // sprosti pomnilniško lokacijo, na katero kaže kazalec

Slika 5: Brisanje objekta
Osnovno pravilo aritmetike s kazalci je, da se naslov izračuna odvisno od velikosti objekta, na katerega kaže kazalec:
vrednost_kazalca + sizeof(tip kazalca) * i
Predpostavimo, da naš prevajalnik shrani realno število v štirih zlogih.
Možne so naslednje operacije:
| ++ | inkrementiranje kazalca |
| -- | dekrementiranje kazalca |
| + | prištevanje celega števila |
| - | odštevanje celega števila |
| += | dodajanje celega števila |
| -= | odvzemanje celega števila |
Pri odštevanju kazalcev dobimo celoštevilčno vrednost, sicer pa novi kazalec.