Skip to main content

Co je to dereferenční operátor?

Operátor dereference je symbol používaný v počítačovém programování k načtení hodnoty umístěné na konkrétní paměťové adrese.Operátor, obvykle reprezentovaný hvězdičkou ve zdrojovém kódu, se použije před proměnnou, která ukazuje na paměťovou adresu nebo ukazatel.Někdy se nazývá operátor nepřímého, dereference může být také použit při deklarování nebo inicializaci proměnných, aby naznačoval, že se jedná o ukazatele na datový typ a nikoli na samotný datový typ.Při určování pořadí operací má dereferenční operátor přednost před téměř všemi standardními matematickými operátory.

Abychom pochopili, co dělá dereferenční operátor, je důležité pochopit, jak fungují datové typy v počítačovém programování.Proměnná v programu může mít hodnotu.Mnohokrát je to prostě celé číslo nebo řetězec znaků.Jindy to může být adresa paměti, která ukazuje na celočíselnou hodnotu.Proměnné, které drží adresy paměti, se nazývají ukazatele.Pokud je matematická operace, jako je například sčítání, provedeno do proměnné ukazatele, aniž by ji dereferencovala, bude operace provedena na paměťové adrese a nikoli na proměnné, na kterou směřuje.Jsou chvíle, kdy aritmetické operace prováděné na adresách paměti mohou zvýšit účinnost, jako v případě krokového pole, ačkoli pole, proto tato funkce existuje.Když je dereferenční operátor použit na ukazateli, budou všechny operace prováděny na datech, která jsou uložena v poloze paměti a nikoli na samotné paměťové adrese.Umístěním operátora mezi typ proměnné a názvem proměnné bude naznačovat, že nová proměnná by měla být ukazatelem na datový typ a ne jen instance typu.Proměnné, které jsou vytvořeny tímto způsobem, je třeba inicializovat pomocí nějaké funkce přidělování paměti, protože ukazatel bude nutné nastavit na nepoužité místo paměti, kterou program používá.Při použití dereferenčního operátora se dá vyhnout.Nejvíce pozoruhodně se pokouší dereference ukazatele, který je nulový nebo nedefinovaný.Ukazatel technicky nemá adresu paměti, takže budou generovány různé chyby nebo výjimky, které zastaví provádění programu.Existují verze operátora dereference, které nezpůsobí chybu, ale tito operátoři mají jinou syntaxi.