Vad är en uppsättning pekare?
En matris med pekare är en standardmatrisdatatyp som innehar en sekvens av minne adresserat till datatyper i motsats till att innehålla andra skalartyper som heltal eller flytande punktnummer. Genom att använda en rad pekare kan ett program ha en grupp av nästan vilken datatyp, datastruktur, klass eller till och med funktion. Effektiv sortering av en rad pekare är också möjlig så att adresserna, om så önskas, kan justeras beroende på deras fysiska plats i datorminnet. Några av komplikationerna vid användning av 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 minnesöverskridning.
Inte alla programmeringsspråk tillåter en rad pekare eftersom konceptet ursprungligen utformades. 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 grupp klassobjekt på högnivå, objektorienterat språk en rad pekare; ändå kan de inte användas eller manipuleras på samma sätt. På ett språk på låg nivå kommer matrisen faktiskt att innehålla ett heltal som är den direkta adressen till pekaren i minneshögen. På de flesta högnivåspråk är denna funktionalitet inte möjlig, även om alternativa paradigmer finns.
En av de aspekter som gör en mängd pekare värdefulla som programmeringsverktyg är att pekarna kan referera till alla tillgängliga data. Pekaren är en datatyp i sig, även om dess enda syfte är att peka mot en annan datatyp. Detta innebär att en rad pekare faktiskt kan innehålla en mängd olika datatyper i samma matris, ä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 matris kan peka på funktioner, inte bara data. En rad funktioner kan tillåta dynamisk numerisk referens av kod. Detta kan vara användbart när du programmerar en språktolk eller annan typ av programvara som behöver ringa vissa funktioner baserat på oförutsägbar ingång utan behov av stora villkorliga uttalanden, t.ex. switchblock.
Vissa problem som presenteras av en rad pekardata är möjligheten att förlora adressen, förhindra att minnet frigörs senare, och chansen att en adress kan skadas genom en oavsiktlig operation som tillägg. Försök att komma åt en felaktig adress kan leda till att skadade data läses eller, i extrema fall, till exempel en misslyckad initialisering, ett segmenteringsfel som kan göra att programmet avslutas oväntat. Försiktig programmering kan hjälpa till att mildra möjligheten för dessa händelser.