Hledat:

Invia.cz Last minute Tunisko Dovolená v Chorvatsku Pojeďte do Egypta Bulharsko Vydělávejte peníze s INVIA.CZ
 

Ukazatel (informatika)

Ukazatel (angl. pointer) je datový typ, který slouží k uložení adresy v paměti počítače. Ukazatel používá většina imperativních programovacích jazyků, jako např. jazyk C a Pascal. V programovacích jazycích je syntaxí zápisu programu rozlišeno, zda se pracuje s hodnotou adresy ukazatele anebo s hodnotou datového prvku, na který ukazuje.

Zvláště významný je tento datový typ v jazyku C, který definuje i tzv. pointerovou aritmetiku (viz níže), díky které lze např. provést výpočet adres různých prvků v poli, nebo naopak z jejich adresy odvodit jejich index. Jazyk C téměř nerozlišuje mezi ukazatelem a polem a dokonce nemá ani datový typ řetězec a nahrazuje jej právě ukazatelem na jeho počátek, resp. s ním pracuje jako s polem znaků.

Při používání ukazatelů často dělají programátoři mnoho programátorských chyb. V novějších programovacích jazycích, jako například Java a Python, jsou ukazatele nahrazeny referencemi na objekty, jejichž použití není tolik náchylné k chybám.

[editovat] Typy ukazatelů

V architektuře procesorů x86, kde se používá adresa dělená na segment a ofset, je možné volit mezi dvěma typy ukazatelů:

Tento způsob práce s pamětí (respektive segmentace paměti) se používal v dobách 16-bitových aplikací pro DOS, dnes je ale považován za zastaralý a na architektuře x86-32 se používá výhradně 32-bitových ukazatelů, respektive na 64-bitových architekturách se používá 64-bitových ukazatelů.

[editovat] Pointerová aritmetika

Pointerová aritmetika definuje možné výpočetní operace s ukazateli. Adresovatelnou jednotkou ukazatele může být jeden byte nebo jedno slovo, ale nejčastěji ve vyšších programovacích jazycích je adresovatelnou jednotkou ukazatele velikost datového typu, který ukazatel adresuje.

Možné operace s ukazateli jsou buď přírůstek adresy P (čili indexace prvků v poli, na jehož počátek P ukazuje), anebo rozdíl adres P (vzdálenost dvou prvků v poli). Obě tyto operace pracují v násobcích velikosti datového typu.

Adresy ukazatelů se kterými se provádí pointerová aritmetika se musí nacházet ve stejném adresovém prostoru (např. poli), jinak nemusí být výsledek operace definován.

Příklad v jazyku C:

int i;       // definice proměnné i datového typu int
int a[3];    // definice proměnné a, pole typu int se třemi prvky
int *p;      // definice proměnné p, ukazatele na datový typ int
p = &i;      // hodnota pointeru je nastavena na adresu proměnné i
*p = 3;      // do paměti na adresu odkazovanou ukazatelem p se uloží hodnota 3
p = &(a[2]); // hodnota pointeru je nastavena na prvek pole a s indexem 2
p = p - 2;   // hodnota pointeru je nastavena na prvek pole a s indexem 0 (tj. první prvek pole)
*p = 5;      // do paměti na adresu odkazovanou p se uloží hodnota 5 (tedy první prvek pole má tuto hodnotu)
 
Ukazatel (informatika) v jiných jazycích: العربية, Català, Deutsch, English, Español, فارسی, Suomi, Français, עברית, Íslenska, Italiano, 日本語, 한국어, Nederlands, Polski, Português, Русский, Slovenčina, Српски / Srpski, Svenska, தமிழ், Türkçe, Українська, 中文
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Ukazatel_(informatika)
Stránka byla naposledy upravena v Stránka byla naposledy editována 1. 9. 2008 v 20:48.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt