Viit a viitab muutujale b. Pange tähele, et b talletab väärtust, samas kui a talletab b aadressi mälus (1462)
Viidad on asukoha määrajad mälus, mille abil on võimalik leida antud viidaga seoses olevaid väärtusi. Viida väärtusele pääseb ligi viitamisoperaatoriga [*]. Viidad võivad hoida igasuguseid andmetüüpe, ka funktsioone ja oma deklareeritud tüüpe. Meeldetuletuseks, et mälus hoitavad väärtused jagunevad väärtusteks ja viitadeks.
C omavad viidad kolme praktilist kasutusala:
Dünaamiliste andmestruktuuride loomeprotsessis
Väärtuste ülekandmist ühest funktsioonist teise
Võimaldavad alternatiivse ligipääsu andmetele
Viitade kohta on neli fundamentaalset põhitõde, mida peab teadma:
Kuidas viitasid deklareerida
Kuidas viitasid määrata väärtustama, ning kuidas seda vahetada
Kuidas viitasid panna viitama viidale ja kuidas neid väärtustada
Kuidas viidad on seoses massiividega
Lisaks:
Arvuti töötab viitadega kiiremini, seega viitad kasutamine muudab ka programmi effektiivsemaks.
Viitasid deklareeritakse samamoodi, kui muutujaid, mis hoiavad väärtuseid, vahega et muutuja nimetuse ette käib tärn (tuntud ka kui korrutusmärk '*'). Viit peab omama sama tüüpi, mis väärtusele ta viitama peab.
//Järgnevalt mõned näited viitade deklareerimise konstruktsioonidest, koos kommentaaridega inti;// täisarv muutuja 'i'int*p;// viit 'p' täisarvulisele väärtuseleinta[];// täisarvu tüüpi massiiv 'a' intf();// funktsioon 'f', mis tagastab täisarvu tüüpi muutuja väärtuseint**pp;// viit 'pp' viidale, mis viitab täisarvuleint(*pa)[];// viit 'pa' täisarvu tüüpi massiivileint(*pf)();// viit 'pf' funktsioonile, mis tagastab täisarvu tüüpi väärtuseint*ap[];// massiiv 'ap' viitasid, mis viitavad täisarvu tüüpi väärtuseleint*fp();// funktsioon 'fp', mis tagastab viida täisarvu tüüpi väärtuseleint***ppp;// viit 'ppp', mis viitab viidale, mis viitab viidale, mis viitab täisarvu tüüpi väärtuseleint(**ppa)[];// viit 'ppa', mis viitab viidale, mis viitab täisarvu tüüpi massiivileint(**ppf)();// viit 'ppf', mis viitab funktsioonile, mis tagastab täisarvu tüüpi väärtuseint*(*pap)[];// viit 'pap', mis viitab viitade massiivile, mis viitavad täisarvu tüüpi väärtuseleint*(*pfp)();// viit 'pfp', mis viitab funktsioonile, mis tagastab viida, mis viitab täisarvu tüüpi väärtuseleint**app[];// massiiv viitasid 'app', mis viitavad täisarvu tüüpi väärtuseleint(*apa[])[];// massiiv viitasid 'apa', mis viitavad täisarvu tüüpi massiivideleint(*apf[])();// massiiv viitasid 'apf', mis viitavad funktsioonile, mis tagastab täisarvu tüüpi väärtuseint***fpp();// funktsioon 'fpp', mis tagastab viida, mis viitab viidale, mis viitab viidale, mis viitab täisarvu tüüpi väärtuseleint(*fpa())[];// funktsioon 'fpa', mis tagastab viida, mis viitab täisarvu tüüpi massiivileint(*fpf())();// funktsioon 'fpf', mis tagastab viida, mis viitab funktsioonile, mis tagastab täisarvu tüüpi väärtuse