Kaj je niz kazalcev?

Niz kazalcev je standardni podatkovni tip niza, ki vsebuje zaporedje pomnilnika, naslovljenega na podatkovne tipe, v nasprotju z drugimi skalarnimi tipi, kot so cela števila ali števila s plavajočo vejico. Z uporabo niza kazalcev lahko program vsebuje niz skoraj vseh podatkovnih tipov, podatkovne strukture, razreda ali celo funkcije. Možno je tudi učinkovito razvrščanje niza kazalcev, tako da se po želji lahko naslovi poravnajo glede na njihovo fizično lokacijo v računalniškem pomnilniku. Nekateri zapleti pri uporabi niza kazalcev so v tem, da se lahko podatki zlahka poškodujejo in da je treba vrsto podatkov, na katere se kaže, upravljati interno, da preprečimo težave s preobremenitvijo pomnilnika.

Vsi programski jeziki ne dovoljujejo niza kazalcev, kot je bil koncept prvotno zasnovan. Jeziki visoke ravni, ki avtomatizirajo upravljanje pomnilnika, ne uporabljajo kazalcev na enak način kot jeziki nižje ravni, čeprav je tehnično niz predmetov razreda v objektno usmerjenem jeziku visoke ravni niz kazalcev; kljub temu jih ni mogoče uporabljati ali manipulirati na enak način. V jeziku nizke ravni bo matrika dejansko vsebovala celo število, ki je neposredni naslov kazalca v pomnilniški kopici. V večini jezikov visoke ravni ta funkcija ni mogoča, čeprav obstajajo nadomestne paradigme.

Eden od vidikov, zaradi katerih je niz kazalcev dragocen kot programsko orodje, je, da se lahko kazalci sklicujejo na katero koli vrsto razpoložljivih podatkov. Kazalec je sam po sebi podatkovni tip, čeprav je njegov edini namen, da kaže na drug tip podatkov. To pomeni, da lahko niz kazalcev dejansko vsebuje različne vrste podatkov v istem nizu, čeprav bi moral program imeti mehanizem za spremljanje, na kaj se je vsak kazalec skliceval.

Močan vidik kazalnikov je, da lahko dejansko kažejo na prevedeno programsko kodo v pomnilniku. To omogoča, da matrika kaže na funkcije, ne le na podatke. Niz funkcij lahko omogoči dinamično številčno sklicevanje na kodo. To je lahko uporabno pri programiranju jezikovnega tolmača ali druge vrste programske opreme, ki mora poklicati določene funkcije na podlagi nepredvidljivega vnosa brez potrebe po velikih pogojnih izjavah, kot so preklopni bloki.

Nekatere težave, ki jih predstavlja niz kazalcev podatkov, so možnost izgube naslova, preprečitev poznejšega sprostitve tega pomnilnika in možnost, da se naslov lahko poškoduje z nenamerno operacijo, kot je dodajanje. Poskusi dostopa do napačnega naslova lahko privedejo do branja poškodovanih podatkov ali, v skrajnih primerih, kot je neuspešna inicializacija, do napake v segmentaciji, ki lahko povzroči, da se program nepričakovano konča. Previdno programiranje lahko pomaga zmanjšati možnost teh dogodkov.