Programmeerimiskeel C/Viidad
Allikas: Wikibooks
Sisukord |
[redigeeri] Sissejuhatus
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.
[redigeeri] Deklareerimine
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.
[redigeeri] Näited viitade deklareerimisest
//Järgnevalt mõned näited viitade deklareerimise konstruktsioonidest, koos kommentaaridega int i; // täisarv muutuja 'i' int *p; // viit 'p' täisarvulisele väärtusele int a[]; // täisarvu tüüpi massiiv 'a' int f(); // funktsioon 'f', mis tagastab täisarvu tüüpi muutuja väärtuse int **pp; // viit 'pp' viidale, mis viitab täisarvule int (*pa)[]; // viit 'pa' täisarvu tüüpi massiivile int (*pf)(); // viit 'pf' funktsioonile, mis tagastab täisarvu tüüpi väärtuse int *ap[]; // massiiv 'ap' viitasid, mis viitavad täisarvu tüüpi väärtusele int *fp(); // funktsioon 'fp', mis tagastab viida täisarvu tüüpi väärtusele int ***ppp; // viit 'ppp', mis viitab viidale, mis viitab viidale, mis viitab täisarvu tüüpi väärtusele int (**ppa)[]; // viit 'ppa', mis viitab viidale, mis viitab täisarvu tüüpi massiivile int (**ppf)(); // viit 'ppf', mis viitab funktsioonile, mis tagastab täisarvu tüüpi väärtuse int *(*pap)[]; // viit 'pap', mis viitab viitade massiivile, mis viitavad täisarvu tüüpi väärtusele int *(*pfp)(); // viit 'pfp', mis viitab funktsioonile, mis tagastab viida, mis viitab täisarvu tüüpi väärtusele int **app[]; // massiiv viitasid 'app', mis viitavad täisarvu tüüpi väärtusele int (*apa[])[];// massiiv viitasid 'apa', mis viitavad täisarvu tüüpi massiividele int (*apf[])();// massiiv viitasid 'apf', mis viitavad funktsioonile, mis tagastab täisarvu tüüpi väärtuse int ***fpp(); // funktsioon 'fpp', mis tagastab viida, mis viitab viidale, mis viitab viidale, mis viitab täisarvu tüüpi väärtusele int (*fpa())[];// funktsioon 'fpa', mis tagastab viida, mis viitab täisarvu tüüpi massiivile int (*fpf())();// funktsioon 'fpf', mis tagastab viida, mis viitab funktsioonile, mis tagastab täisarvu tüüpi väärtuse

