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.