Ukazatel
K pokročilému programování v jazyce C patří práce s ukazately. Můžeme je použít jako parametry ve funkcích, při práci s polem, při dynamické alokaci paměti atd.
Ukazatel je proměnná jako ostatní, pouze hodnota v ní uložená má jiný význam, než jsme byli zvyklí dosud. V jazyce C je ukazatel přísně typový, t.j. deklarujeme ho jako ukazatel na určitý datový typ. Obsahem ukazatele je adresa v paměti. Při práci s ukazatelem nás ve většině případů zajímá hodnota, uložená na dané adrese.
Proměnná uk je ukazatel. Hodnota v něm uložená je 25. Jedná se o adresu, na které je uložená hodnota, se kterou budeme dále pracovat. Na absolutní adrese 25 je hodnota 18. Ukazatel uk ukazuje na hodnotu 18, ale sám má hodnotu 25.
Poznámka: Absolutní adresa proměnné uk není pro nás v programu většinou důležitá.
Příklady deklarace ukazatelů:
int *uk1, cislo = 5; //ukazatel na cele cislo
float *uk2; //ukazatel na realnou hodnotu
FILE *f; //promenna pro praci se souborem
Ukazatel po své deklaraci neukazuje na žádnou proměnnou, je třeba ho nastavit, jinak s ním nesmíme pracovat. Nastavení ukazatele můžeme provést např. adresním operátorem následovně:
uk = &cislo;
Uvedený příkaz nastaví hodnotu ukazatele uk1 na adresu proměnné cislo. Pokud chceme pracovat s hodnotou, na kterou ukazatel ukazuje (v našem případě 5), použijeme v programu zápis *uk1.
V jazyce C je v stdio.h definována konstanta NULL, která představuje prázdný (nulový) ukazatel. Můžeme ho použít při testování ukazatelů.