Ukazatel (programování): Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
odkaz operační paměť
SinBot (diskuse | příspěvky)
m oprava odkazu na rozcestník nebo redirect, DOSDisk Operating System
Řádek 10: Řádek 10:
* '''vzdálený ukazatel''' (far pointer) – obsahuje identifikaci (číslo) segmentu i lineární adresu (offset)
* '''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 16-[[bit]]ových aplikací pro [[DOS]], dnes je ale považován za zastaralý a na architektuře [[x86|x86-32]] se používá výhradně 32-[[bit]]ových ukazatelů, respektive na 64-bitových architekturách se používá 64-bitových ukazatelů.
Tento způsob práce s pamětí (respektive segmentace paměti) se používal v dobách 16-[[bit]]ových aplikací pro [[Disk Operating System|DOS]], dnes je ale považován za zastaralý a na architektuře [[x86|x86-32]] se používá výhradně 32-[[bit]]ových ukazatelů, respektive na 64-bitových architekturách se používá 64-bitových ukazatelů.


== Příklad ==
== Příklad ==

Verze z 30. 12. 2006, 03:12

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, 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.

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ů:

  • 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 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ů.

Příklad

Jazyk C

int i;   // definice proměnné i datového typu int
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