Mis on viiteoperaator?

Viitamise operaator on sümbol, mida kasutatakse arvutiprogrammeerimises kindlal mäluaadressil asuva väärtuse hankimiseks. Operaator, mida lähtekoodis tavaliselt tähistab tärn, rakendatakse enne muutujat, mis osutab mäluaadressile või osutile. Mõnikord nimetatakse seda ka kaudse operaatoriks ja seda saab kasutada ka muutujate deklareerimisel või initsialiseerimisel, et näidata, et need on andmetüübile viitavad, mitte andmetüübile. Tehete järjekorra määramisel on viitamise tehtegur ülimuslik peaaegu kõigi tavaliste matemaatiliste operaatorite ees.

Et mõista, mida see operaator teeb, on oluline mõista, kuidas andmetüübid arvutiprogrammeerimises töötavad. Programmi muutuja võib sisaldada väärtust. Sageli on see lihtsalt täisarv või tähemärkide jada. Muul ajal võib see olla mäluaadress, mis osutab täisarvu väärtusele. Muutujaid, mis hoiavad mäluaadresse, nimetatakse osutiteks.

Kui osuti sisaldavale mäluaadressile salvestatud andmeid on vaja määrata, muuta või hankida, tuleb kasutada viiteoperaatorit. Kui matemaatiline tehe, näiteks liitmine, tehakse osutimuutujale ilma sellele viitamata, tehakse toiming mäluaadressiga, mitte muutujaga, millele see osutab. Mõnikord võivad mäluaadressidega tehtavad aritmeetilised toimingud tõhusust suurendada, näiteks massiivist läbi astumine, mistõttu see funktsioon on olemas. Kui viiteoperaatorit kasutatakse kursoril, tehakse kõik toimingud andmetega, mis on salvestatud mälukohta, mitte mäluaadressi endaga.

Operaatorit saab kasutada ka uue muutuja esmasel deklareerimisel. Asetades operaatori muutuja tüübi ja muutuja nime vahele, näitab see, et uus muutuja peaks olema andmetüübi osuti, mitte ainult tüübi eksemplar. Sel viisil loodud muutujad tuleb lähtestada teatud tüüpi mälu jaotamise funktsiooniga, kuna programmi kasutatav mäluhaldur peab kursori seadma kasutamata mälukohta.

Võrdlusoperaatori kasutamisel tuleb vältida mõningaid ohte. Eelkõige üritab see nullist või määratlemata osutist viidata. Kursoril ei ole tehniliselt mäluaadressi, mistõttu tekivad erinevad vead või erandid, mis peatavad programmi täitmise. Viitamise eemaldamise operaatori null-turvalised versioonid on olemas, mis ei põhjusta viga, kuid neil operaatoritel on erinev süntaks.