Põhiline erinevus C-i deklaratsiooni ja definitsiooni vahel on see, et deklaratsioon C-s ütleb kompilaatorile funktsiooni nime, tagastustüübi ja parameetrite kohta, samas kui C-i definitsioon sisaldab funktsiooni tegelikku rakendamist. See tähendab, et deklaratsioon annab kompilaatorile teavet funktsiooni kohta, samas kui definitsioon sisaldab funktsiooni tegelikke avaldusi konkreetse ülesande täitmiseks.
C on üldotstarbeline struktureeritud programmeerimiskeel. See kasutab juhtimisstruktuure, nagu if/else, kordusi, nagu for loop, while loop ja funktsioone. Funktsioon on lausete kogum, mis aitab teatud ülesannet ikka ja jälle täita. Lisaks on võimalik funktsioone välja kutsuda põhifunktsioonist. Pärast funktsiooni viimase lause täitmist läheb juhtelement tagasi põhifunktsioonile. Selles artiklis käsitletakse funktsioonide deklareerimist ja määratlust C-s ning võrreldakse nende erinevusi. Funktsiooni definitsioon määrab, mida funktsioon teeb, ja deklaratsioon määrab, mis funktsioonile läheb; see on prototüüp.
Mis on deklaratsioon keeles C?
Deklaratsioon annab kompilaatorile funktsiooni kohta teavet. Deklaratsiooni süntaks on järgmine.
return_ type function_name (parameetrite loend);
Oletame ette funktsiooni, mis arvutab kahe täisarvu summa. Deklaratsioon on järgmine.
int summa (int num1, int num2);
Funktsiooni nimi on summa ja parameetrid on kaks täisarvu, mis on num1 ja num2. See funktsioon tagastab täisarvu. Täielik lause lõpeb semikooloniga.
Deklaratsioonis ei ole vaja parameetrite nimetusi lisada. Seetõttu on võimalik mainida ka ainult andmetüüpi järgmiselt. Järgmine on kehtiv deklaratsioon.
int summa (int, int);
Mis on definitsioon C-s?
Definitsioon sisaldab funktsiooni tegelikke avaldusi konkreetse ülesande täitmiseks. Süntaks on järgmine.
return_type funktsiooni_nimi (parameetrite loend){
// funktsioonilaused
}
Funktsiooni nimi aitab funktsiooni tuvastada. Funktsiooni käivitamisel lähevad väärtused sellele funktsioonile. Need väärtused kopeeritakse parameetritesse. Parameetrite loend võib sisaldada ühte parameetrit või mitut parameetrit. Ja neil parameetritel on andmetüüp ja nimi. Lisaks võivad funktsioonid olla ka ilma ühegi parameetrita.
Funktsiooni laused on lokkis sulgudes. See on funktsiooni keha. Pärast funktsiooni täitmist tagastab see väärtuse. Tagastamise tüüp sõltub tagastusväärtusest. Kui funktsioon tagastab täisarvu, on tagastamise tüüp int. Kui funktsioon tagastab double, siis tagastamise tüüp on double jne.
Vaadake allolevat koodi deklaratsiooni ja funktsiooni definitsiooniga.
Joonis 01: Programm kahe arvu liitmise arvutamiseks
Vastav alt ül altoodud programmile kuvatakse real 3 deklaratsioon. See annab kompilaatorile teada funktsiooni nime, parameetrid jne. Põhifunktsioonis võetakse klaviatuurilt kaks väärtust, mis salvestatakse muutujatesse ‘a’ ja ‘b’. Real 12 edastatakse need väärtused funktsioonile, mida nimetatakse summaks. Need "a" ja "b" on argumendid.
Real 16 käivitatakse summafunktsioon. See kopeerib väärtuse a numbriks num1 ja väärtuse b numbriks num2. See funktsioon tagastab liitmise ja selle väärtuse salvestab muutuja "ans" (rida 12). Lõpuks prinditakse vastus ekraanile. Lühid alt, rida 3 näitab deklaratsiooni, real 16 kuni 18 aga määratlust.
Mis vahe on deklaratsioonil ja definitsioonil C-s?
Deklaratsioon on prototüüp, mis määrab funktsiooni nime ja tüübisignatuuri (nt andmetüübid, tagastustüübid ja parameetrid), kuid jätab välja funktsiooni keha. Definitsioon määrab funktsiooni nime ja tüübi allkirjad (nt andmetüübid, tagastustüübid ja parameetrid) ning sisaldab funktsiooni keha. Deklaratsioon ütleb kompilaatorile funktsiooni nime ja selle kutsumise. Teisest küljest sisaldab definitsioon funktsiooni tegelikku rakendamist. See kirjeldab funktsiooni ülesannet.
Kokkuvõte – deklaratsioon vs definitsioon C
Deklaratsiooni ja C-i definitsiooni erinevus seisneb selles, et deklaratsioon C-s annab kompilaatorile teada funktsiooni nime, tagastustüübi ja parameetrid, samas kui definitsioon C-s sisaldab funktsiooni tegelikku rakendamist.