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á operátor dereference přednost téměř na všech standardních matematických operátorech.
Abychom pochopili, co operátor dereference dělá, je důležité pochopit, jak fungují typy dat 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.
6 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. Pokud je operátor dereference použit na ukazateli, budou všechny operace prováděny na datech, která jsou uložena v místě paměti a nikoli samotné paměťové adresy.Operátor lze také použít při původném deklarování nové proměnné. 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 aukazatel na datový typ a nejen na instanci 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 muset být nastaven na nevyužité paměťové místo správce paměti, kterou program používá.
Existuje určitá rizika, kterým je třeba se vyhnout při použití operátora dereference. 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.