Skip to main content

Co je řada ukazatelů?

Řada ukazatelů je standardní datový typ pole, který obsahuje sekvenci paměti adresované typy dat, na rozdíl od držení jiných skalárních typů, jako jsou celé čísla nebo čísla s pohyblivým bodem.Použitím řady ukazatelů je program schopen mít řadu téměř jakéhokoli datového typu, datové struktury, třídy nebo dokonce funkce.Je také možné efektivní třídění řady ukazatelů, takže pokud je to žádoucí, mohou být adresy zarovnány podle jejich fyzické umístění v paměti počítače.Některé z komplikací při používání řady ukazatelů jsou, že data mohou být snadno poškozena a že typ údajů, na kterých se ukazuje, je třeba řídit interně, aby se zabránilo problémům s přetečením paměti.

Ne všechny programovací jazyky umožňují řadu ukazatelů jakoKoncept byl původně koncipován.Jazyky na vysoké úrovni, které automatizují správu paměti, nepoužívají ukazatele stejným způsobem jako jazyky nižší úrovně, i když technicky řada objektů třídy ve vysoké úrovni, objektově orientovaném jazyce je řadou ukazatelů;Přesto je nelze použít ani manipulovat stejným způsobem.V jazyce nízké úrovně bude pole vlastně obsahovat celočíselnou hodnotu, která je přímou adresou ukazatele v paměťové haldě.Ve většině jazyků na vysoké úrovni není tato funkce možná, ačkoli existují alternativní paradigmata.Ukazatel je sám o sobě datový typ, i když jeho jediným účelem je ukazovat na jiný datový typ.To znamená, že řada ukazatelů může ve skutečnosti obsahovat řadu datových typů ve stejném poli, ačkoli program by musel mít mechanismus, aby sledoval, na co se každý ukazatel odkazuje.

Silným aspektem ukazatelů je to, že ve skutečnosti mohoupoukazujte na kompilovaný programový kód v paměti.To umožňuje pole ukazovat na funkce, nejen na data.Řada funkcí může umožnit dynamické numerické odkazy 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ý musí nazvat určité funkce založené na nepředvídatelném vstupu, aniž by bylo nutné velké podmíněné prohlášení, jako jsou bloky přepínačů.Ztráta adresy, zabránit tomu, aby byla tato paměť uvolněna později, a šance, že adresu může být poškozena neúmyslnou operací, jako je přidání.Pokusy o přístup k nesprávné adrese by mohly vést k poškození čtení dat nebo, v extrémních případech, jako je neúspěšná inicializace, segmentační chyba, která by mohla způsobit, že program nečekaně ukončí.Opatrné programování může pomoci zmírnit možnost těchto událostí.