Co je pole ukazatelů?
Pole ukazatelů je standardní datový typ pole, který uchovává sekvenci paměti adresovanou datovým typům, na rozdíl od uchovávání jiných skalárních typů, jako jsou celá čísla nebo čísla s pohyblivou řádovou čárkou. Pomocí pole ukazatelů je program schopen mít pole téměř jakéhokoli typu dat, datové struktury, třídy nebo dokonce funkce. Je také možné efektivní třídění ukazatelů, takže pokud je to žádoucí, adresy mohou být zarovnány podle jejich fyzického umístění v paměti počítače. Některé z komplikací při používání řady ukazatelů spočívají v tom, že data mohou být snadno poškozena a že typ dat, na který je odkazováno, musí být spravován interně, aby se zabránilo problémům s přetečením paměti.
Ne všechny programovací jazyky umožňují řadu ukazatelů, protože koncept byl původně koncipován. Jazyky vysoké úrovně, které automatizují správu paměti, nepoužívají ukazatele stejným způsobem jako jazyky nižší úrovně, ačkoli technicky je pole třídních objektů ve vysoce objektivním jazyce orientovaném na objekty řadou ukazatelů; přesto je nelze používat ani s nimi manipulovat stejným způsobem. V jazyce nízké úrovně bude pole ve skutečnosti obsahovat celé číslo, které je přímou adresou ukazatele v paměti haldy. Ve většině jazyků na vysoké úrovni tato funkce není možná, ačkoli existují alternativní paradigmata.
Jedním z aspektů, díky nimž je řada ukazatelů hodnotných jako programovací nástroj, je to, že ukazatele mohou odkazovat na jakýkoli typ dostupných dat. Ukazatel je datový typ sám o sobě, i když jeho jediným účelem je směřovat k jinému datovému typu. To znamená, že řada ukazatelů může ve skutečnosti obsahovat různé typy dat ve stejném poli, ačkoli program by musel mít mechanismus pro sledování toho, na co každý ukazatel odkazoval.
Silným aspektem ukazatelů je, že mohou ve skutečnosti ukazovat na kompilovaný programový kód v paměti. To umožňuje, aby pole ukazovalo na funkce, nejen na data. Řada funkcí může umožnit dynamické číselné odkazování na kód. To může být užitečné při programování jazykového tlumočníka nebo jiného typu softwaru, který potřebuje volat určité funkce na základě nepředvídatelného vstupu bez potřeby velkých podmíněných příkazů, jako jsou přepínací bloky.
Některé problémy, které představují pole dat ukazatele, jsou možnost ztráty adresy, zabránění pozdějšímu uvolnění paměti a pravděpodobnost, že adresa může být poškozena neúmyslnou operací, jako je přidání. Pokusy o přístup k nesprávné adrese mohou vést ke čtení poškozených dat nebo, v extrémních případech, jako je selhání inicializace, k chybě segmentace, která by mohla způsobit neočekávané ukončení programu. Opatrné programování může pomoci zmírnit možnost těchto událostí.