Vad är en samling pekare?

En array av pekare är en standard array-datatyp som innehåller en sekvens av minne adresserat till datatyper i motsats till att hålla andra skalära typer som heltal eller flyttal. Genom att använda en array av pekare kan ett program ha en array av nästan vilken datatyp, datastruktur, klass eller till och med funktion som helst. Effektiv sortering av en uppsättning av pekare är också möjlig så att, om så önskas, adresserna kan inriktas enligt deras fysiska plats i datorns minne. Några av komplikationerna med att använda en rad pekare är att data lätt kan skadas och att den typ av data som pekas på måste hanteras internt för att förhindra problem med minnesspill.

Inte alla programmeringsspråk tillåter en rad pekare eftersom konceptet ursprungligen var tänkt. Språk på hög nivå som automatiserar minneshantering använder inte pekare på samma sätt som språk på lägre nivå, även om tekniskt sett är en uppsättning klassobjekt på en hög nivå, objektorienterat språk en uppsättning pekare; trots det kan de inte användas eller manipuleras på samma sätt. I ett lågnivåspråk kommer matrisen faktiskt att ha ett heltalsvärde som är den direkta adressen till pekaren i minneshögen. I de flesta högnivåspråk är denna funktion inte möjlig, även om alternativa paradigm finns.

En av aspekterna som gör en rad pekare värdefulla som ett programmeringsverktyg är att pekarna kan referera till vilken typ av data som helst. Pekaren är en datatyp i sig, även om dess enda syfte är att peka mot en annan datatyp. Detta innebär att en array av pekare faktiskt kan innehålla en mängd olika datatyper i samma array, även om programmet skulle behöva ha en mekanism för att hålla reda på vad varje pekare refererade till.

En kraftfull aspekt av pekare är att de faktiskt kan peka på kompilerad programkod i minnet. Detta gör att en array kan peka på funktioner, inte bara data. En rad funktioner kan tillåta dynamisk numerisk referens av kod. Detta kan vara användbart vid programmering av en språktolk eller annan typ av mjukvara som behöver anropa vissa funktioner baserat på oförutsägbar inmatning utan behov av stora villkorliga uttalanden såsom switchblock.

Vissa problem som uppstår av en rad pekardata är möjligheten att förlora adressen, vilket förhindrar att minnet frigörs senare, och risken att en adress kan skadas genom en oavsiktlig operation såsom tillägg. Försök att komma åt en felaktig adress kan leda till att korrupta data läses eller, i extrema fall som en misslyckad initiering, ett segmenteringsfel som kan få programmet att avslutas oväntat. Försiktig programmering kan bidra till att minska risken för dessa händelser.