A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ukazatel (anglicky pointer) je v informatice označení pro datový typ, který slouží k uložení adresy v paměti počítače. Ukazatel slouží pro zpřístupnění dat, která jsou na příslušné adrese v operační paměti uložena.
Charakteristika
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 proto ukazatele nahrazeny referencemi na objekty, jejichž použití není tolik náchylné k základním programátorským chybám. Naopak ale u nezkušeného programátora může takto vzniknout mnoho těžko objevitelných chyb, vzniklých neznalostí pozadí jazyka.
Typy ukazatelů
V architektuře procesorů x86, kde se používá adresa dělená na segment a offset, je možné volit mezi dvěma typy ukazatelů:
- blízký ukazatel (near pointer) – obsahuje jen lineární adresu (offset), a neobsahuje identifikaci (číslo) segmentu
- vzdálený ukazatel (far pointer) – obsahuje identifikaci (číslo) segmentu i lineární adresu (offset)
Tento způsob práce s pamětí (respektive segmentace paměti) se používal v dobách 16bitových aplikací pro DOS, dnes je ale považován za zastaralý a na architektuře IA-32 se používá výhradně 32bitových ukazatelů, respektive na 64bitových architekturách se používá 64bitových ukazatelů.
Pointerová aritmetika
Pointerová aritmetika definuje možné výpočetní operace s ukazateli. Adresovatelnou jednotkou ukazatele může být jeden bajt 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; // 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); // 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)
Externí odkazy
- Obrázky, zvuky či videa k tématu Ukazatel na Wikimedia Commons
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk