Viit (informaatika)

Allikas: Vikipeedia

Viit (inglise keeles pointer) on informaatikas muutuja, mille väärtus on mäluaadress. Viit tavaliselt viitab mõnele teise muutujale.

Viitasid kasutatakse näiteks siis, kui andmeid jagatakse programmi erinevate osade vahel, aga andmete kopeerimine on kulukas. Sel juhul on otstarbekas edastada vaid viit ehk mäluaadress, kus andmed paiknevad.

Viit ei pruugi alati viidata olemasolevale mälupesale. Seega tuleb hoolikalt jälgida, et viit oleks kasutamisel õigesti väärtustatud. Kõrgema taseme keeled (nt. Java ja Python) väldivad viitade kasutamist, sest olematu või vale mälupesa lugemine või kirjutamine võib programmi kokku jooksutada.

Et vältida väärtustamata viida kasutamist, antakse viidale tihti algväärtus 0. Seda nimetatakse nullviidaks (inglise k. null pointer). Enamikus süsteemides võib eeldada, et mäluaadressi 0 ei kasutata. Nullviidaga saab märkida ka näiteks listi lõppu või objekti puudumist.

Viidad keeltes C ja C++[muuda | redigeeri lähteteksti]

Programmeerimiskeeltes C ja C++ defineeritakse viit tärni (*) abil, mis asub muutuja tüübi ja nime vahel. Iga viit on seotud kindla andmetüübiga. Sümbol & muutuja nime ees tähistab selle aadressi.

int a = 2;    // a ja b on täisarvu tüüpi muutujad
int b = 3;
int *p = &a;  // p on viit muutujale a
Muutuja Address Väärtus
a 0x8130 0x00000002
b 0x8134 0x00000003
p 0x8138 0x00008130

Viida kaudu saab muuta viidatava muutuja väärtust. Tärn viida ees tähendabki, et kasutatakse viidatavat muutujat.

*p = 6;
Muutuja Aadress Väärtus
a 0x8130 0x00000006
b 0x8134 0x00000003
p 0x8138 0x00008130

Viida enda väärtust muutes saab viidata teistele muutujatele.

p = &b;
Muutuja Aadress Väärtus
a 0x8130 0x00000006
b 0x8134 0x00000003
p 0x8138 0x00008134

Viida kaudu saab ka lugeda viidatavaid muutujaid.

a = *p;
Muutuja Aadress Väärtus
a 0x8130 0x00000003
b 0x8134 0x00000003
p 0x8138 0x00008134