Kurz programování v C/Ukazatele

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání

Ukazatel, anglicky pointer, je datový typ, který ale na rozdíl od běžných proměnných neslouží k uchovávání dat, ale k uchovávání adres.

Základní práce[editovat]

Ukazatel se definuje podobným způsobem jako proměnné, jediný rozdíl je v tom že se před název přidá znak hvězdičky (*).


Adresa je číslo v paměti, které nelze zaměnit s jinou adresou. Značíme jej pomocí &.


Ukazatel se dá chápat jako prst, který ukazuje na nějaké místo v paměti. Značíme jej pomocí *.


Deklarace proměnných:

int a;
int b;
int *p;

V tuto chvíli si můžeme paměť představit jako tři nezávislé paměťové buňky. Rozdíl mezi a, b a p je v tom, že do p se ukládají adresy a ne data.

Pointer-a.svg
Pointer-p.svg
Pointer-b.svg
a = 55;
b = 31;

Do proměnné (ukazatele) p se uloží adresa proměnné a.

p = &a;

Pointer-a55.svg
číslo a má v paměťové buňce 0x45A1 hodnotu 55


Pointer-b31.svg
číslo b má v paměťové buňce 0x45B4 hodnotu 31

Pointer-pa.svg
do proměnné p se uloží číslo a z paměťové buňky 0x45A1, což je prázdná množina

Pointer-pa55.svg
do proměnné p se uloží číslo a z paměťové buňky 0x45A1, což je 55

Pointer-pa84.svg
do proměnné p se uloží číslo a z paměťové buňky 0x45A1, což je 84

Pointer-pab.svg
do proměnné p se uloží číslo a z paměťové buňky 0x45A1, což je 31