Wat is een reeks aanwijzers?
Een array van pointers is een standaard array datatype dat een reeks geheugen bevat die is geadresseerd aan datatypes in tegenstelling tot het houden van andere scalaire types zoals gehele getallen of getallen met drijvende komma. Door een reeks aanwijzers te gebruiken, kan een programma een reeks van bijna elk gegevenstype, gegevensstructuur, klasse of zelfs functie hebben. Efficiënt sorteren van een reeks wijzers is ook mogelijk zodat, indien gewenst, de adressen kunnen worden uitgelijnd op basis van hun fysieke locatie in het computergeheugen. Sommige van de complicaties bij het gebruik van een reeks aanwijzingen zijn dat de gegevens gemakkelijk kunnen worden beschadigd en dat het type gegevens waarnaar wordt verwezen intern moet worden beheerd om problemen met geheugenoverloop te voorkomen.
Niet alle programmeertalen laten een reeks aanwijzers toe, aangezien het concept oorspronkelijk werd bedacht. Talen op hoog niveau die geheugenbeheer automatiseren, gebruiken aanwijzers niet op dezelfde manier als talen op lager niveau, hoewel technisch gezien een reeks klasseobjecten in een objectgerichte taal op hoog niveau een reeks aanwijzers is; toch kunnen ze niet op dezelfde manier worden gebruikt of gemanipuleerd. In een taal op laag niveau zal de array in feite een geheel getal bevatten dat het directe adres van de aanwijzer in de geheugenheap is. In de meeste talen op hoog niveau is deze functionaliteit niet mogelijk, hoewel er alternatieve paradigma's bestaan.
Een van de aspecten die een reeks aanwijzers waardevol maakt als programmeertool, is dat de aanwijzers naar elk type beschikbare gegevens kunnen verwijzen. De aanwijzer is op zichzelf een gegevenstype, hoewel het enige doel ervan is om naar een ander gegevenstype te wijzen. Dit betekent dat een reeks aanwijzers in feite een verscheidenheid aan gegevenstypen in dezelfde reeks kan bevatten, hoewel het programma een mechanisme zou moeten hebben om bij te houden waar elke aanwijzer naar verwijst.
Een krachtig aspect van pointers is dat ze daadwerkelijk kunnen verwijzen naar gecompileerde programmacode in het geheugen. Hierdoor kan een array naar functies verwijzen, niet alleen naar gegevens. Een reeks functies kan dynamische numerieke verwijzing van code mogelijk maken. Dit kan handig zijn bij het programmeren van een taalinterpreter of ander type software die bepaalde functies moet aanroepen op basis van onvoorspelbare invoer zonder de noodzaak van grote voorwaardelijke verklaringen zoals schakelblokken.
Sommige problemen die worden gepresenteerd door een reeks pointergegevens zijn de mogelijkheid om het adres te verliezen, te voorkomen dat dat geheugen later wordt vrijgegeven en de kans dat een adres kan worden beschadigd door een onbedoelde bewerking, zoals toevoeging. Pogingen om toegang te krijgen tot een onjuist adres kunnen ertoe leiden dat beschadigde gegevens worden gelezen of, in extreme gevallen, zoals een mislukte initialisatie, een segmentatiefout waardoor het programma onverwacht kan worden beëindigd. Voorzichtig programmeren kan de mogelijkheid van deze gebeurtenissen helpen verminderen.