functions c with types examples
Typy funkcií v C ++ spolu s ich použitiami.
V našich predchádzajúcich tutoriáloch sme doteraz videli rôzne koncepty v C ++, ako sú premenné, triedy úložiska, operátory, polia, reťazce atď.
V tomto tutoriále sa posunieme ďalej a prediskutujeme koncept funkcií. Funkciám sa tiež hovorí metódy, podprogramy alebo procedúry.
=> Prečítajte si rozsiahlu sériu výukových programov C ++ tu.
Čo sa dozviete:
- Ako definujeme funkciu?
- Typy funkcií v C ++
- Vyhlásenie o funkcii
- Definícia funkcie
- Volanie funkcie
- Formálne a skutočné parametre
- Návratové hodnoty
- Funkcie neplatnosti
- Prenos parametrov do funkcií
- Predvolené parametre
- Konštantné parametre
- Vložené funkcie
- Používanie štruktúr vo funkciách
- Záver
- Odporúčané čítanie
Ako definujeme funkciu?
Funkcia je skupina príkazov, ktoré sú spojené na vykonanie konkrétnej úlohy. Môžu to byť príkazy vykonávajúce niektoré opakované úlohy alebo príkazy vykonávajúce niektoré špeciálne úlohy, ako je tlač atď.
Jedným z použití funkcií je zjednodušenie kódu jeho rozdelením na menšie jednotky, ktoré sa nazývajú funkcie. Ešte ďalšou myšlienkou používania funkcií je, že nám to bráni v písaní toho istého kódu znova a znova. Musíme len napísať jednu funkciu a potom ju zavolať podľa potreby, bez toho, aby sme museli opakovane písať rovnakú množinu príkazov.
Typy funkcií v C ++
V jazyku C ++ máme dva typy funkcií, ako je uvedené nižšie.
Vstavané funkcie
Vstavané funkcie sa tiež nazývajú knižničné funkcie. Toto sú funkcie, ktoré poskytuje C ++ a nemusíme si ich písať sami. Tieto funkcie môžeme priamo použiť v našom kóde.
Tieto funkcie sú umiestnené v hlavičkových súboroch C ++. Napríklad ,, sú hlavičky, ktoré majú zabudované matematické funkcie a reťazcové funkcie.
Pozrime sa na príklad použitia zabudovaných funkcií v programe.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Výkon:
Zadajte vstupný reťazec: Pomocník pre testovanie softvéru
Zadaný reťazec: Pomocník pri testovaní softvéru!
Veľkosť šnúrky: 21
Tu používame hlavičky a. Dátové typy a ďalšie vstupné / výstupné funkcie sú definované v knižnici. Reťazcové funkcie používané ako getline, size sú súčasťou hlavičky.
Užívateľom definované funkcie
C ++ tiež umožňuje používateľom definovať svoje vlastné funkcie. Toto sú užívateľom definované funkcie. Môžeme definovať funkcie kdekoľvek v programe a potom tieto funkcie vyvolať z ktorejkoľvek časti kódu. Rovnako ako premenné, aj tie by sa mali deklarovať pred použitím, rovnako je potrebné deklarovať funkcie pred ich volaním.
Pozrime sa podrobne na funkcie definované používateľom.
Všeobecná syntax pre užívateľom definované funkcie (alebo jednoducho funkcie) je uvedená nižšie:
ako extrahovať súbory 7z na mac
return_type functionName(param1,param2,….param3) { Function body; }
Ako je uvedené vyššie, každá funkcia má:
- Typ vrátenia: Je to hodnota, ktorú funkcie vrátia volajúcej funkcii po vykonaní konkrétnej úlohy.
- functionName : Identifikátor používaný na pomenovanie funkcie.
- Zoznam parametrov: Označené param1, param2, ... paramn vo vyššie uvedenej syntaxi. Toto sú argumenty, ktoré sa odovzdajú funkcii pri volaní funkcie. Zoznam parametrov je voliteľný, to znamená, že môžeme mať funkcie, ktoré nemajú žiadne parametre.
- Funkčný orgán: Skupina vyhlásení, ktoré vykonávajú konkrétnu úlohu.
Ako už bolo spomenuté, pred použitím je potrebné funkciu „deklarovať“.
Vyhlásenie o funkcii
Deklarácia funkcie informuje kompilátor o návratovom type funkcie, počte parametrov použitých funkciou a jej dátových typoch. Vrátane názvov parametrov vo funkcii je vyhlásenie voliteľné. Deklarácia funkcie sa tiež nazýva ako prototyp funkcie.
Ďalej uvádzame niekoľko príkladov vyhlásenia o funkcii pre vašu referenciu.
int sum(int, int);
Vyššie uvedená deklarácia má funkciu „súčet“, ktorá berie ako parametre dve celé čísla a vracia celočíselnú hodnotu.
void swap(int, int);
To znamená, že funkcia swap berie dva parametre typu int a nevracia žiadnu hodnotu, a preto je návratový typ neplatný.
void display();
Funkčný displej neberie žiadne parametre a taktiež nevracia žiadny typ.
Definícia funkcie
Definícia funkcie obsahuje všetko, čo deklarácia funkcie obsahuje, a navyše obsahuje aj telo funkcie uzavreté v zložených zátvorkách ({}).
Okrem toho by mala mať aj pomenované parametre. Keď je funkcia volaná, riadenie programu prechádza na definíciu funkcie, aby bolo možné vykonať funkčný kód. Po dokončení vykonávania funkcie ovládací prvok prejde späť do bodu, v ktorom bola funkcia volaná.
Pre vyššie uvedenú deklaráciu funkcie swap je definícia uvedená nižšie:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Upozorňujeme, že deklarácia a definícia funkcie môžu byť spojené. Ak definujeme funkciu pred jej referencovaním, nie je potrebné samostatné vyhlásenie.
Zoberme si kompletný programovací príklad na demonštráciu funkcie.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Volanie funkcie Keď máme v našom programe funkciu, potom v závislosti od požiadavky musíme túto funkciu zavolať alebo vyvolať. Iba keď je funkcia vyvolaná alebo vyvolaná, vykoná svoju sadu príkazov, aby poskytla požadované výsledky.
Túto funkciu je možné volať z ľubovoľného miesta v programe. Môže sa volať z hlavnej funkcie alebo z akejkoľvek inej funkcie, ak program používa viac ako jednu funkciu. Funkcia, ktorá volá inú funkciu, sa nazýva „Funkcia volania“.
Vo vyššie uvedenom príklade výmeny čísel sa funkcia zámeny volá v hlavnej funkcii. Preto sa hlavná funkcia stáva volacou funkciou.
Formálne a skutočné parametre
Už sme videli, že môžeme mať parametre pre funkcie. Parametre funkcie sú v definícii funkcie poskytované ako zoznam parametrov, ktorý nasleduje za názvom funkcie. Keď je funkcia volaná, musíme odovzdať skutočné hodnoty týchto parametrov, aby pomocou týchto skutočných hodnôt mohla funkcia plniť svoju úlohu.
Zavolajú sa parametre, ktoré sú definované v definícii funkcie Formálne parametre . Vyvolávajú sa parametre volania funkcií, ktoré sú skutočnými hodnotami Skutočné parametre.
Vo vyššie uvedenom príklade výmeny čísel sme napísali komentáre týkajúce sa formálnych a skutočných parametrov. Vo volacej funkcii, t. J. Main, sa načíta hodnota dvoch celých čísel a odovzdá sa funkcii swap. Toto sú skutočné parametre.
Definície týchto parametrov môžeme vidieť v prvom riadku definície funkcie. Toto sú formálne parametre.
Typ formálnych a skutočných argumentov by sa mal zhodovať. Zhodné by malo byť aj poradie formálnych a skutočných parametrov.
Návratové hodnoty
Keď funkcia vykoná svoju zamýšľanú úlohu, mala by vrátiť výsledok volajúcej funkcii. Na to potrebujeme návratový typ funkcie. Funkcia môže volajúcej funkcii vrátiť jednu hodnotu. Návratový typ funkcie je deklarovaný spolu s prototypom funkcie.
Ukážme si príklad pridania dvoch čísel na demonštráciu návratových typov.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Výkon:
Zadajte dve čísla, ktoré chcete pridať: 11 11
Súčet dvoch čísel: 22
Vo vyššie uvedenom príklade máme funkčný súčet, ktorý vezme dva celočíselné parametre a vráti celočíselný typ. V hlavnej funkcii načítame zo vstupu konzoly dve celé čísla a odovzdáme ich funkcii súčtu. Pretože návratový typ je celé číslo, máme na LHS výslednú premennú a RHS je volanie funkcie.
Keď sa vykoná funkcia, výraz (a + b) vrátený súčtom funkcie sa priradí výslednej premennej. To ukazuje, ako sa používa návratová hodnota funkcie.
Funkcie neplatnosti
Videli sme, že všeobecná syntax funkcie vyžaduje, aby sa definoval návratový typ. Ak ale v prípade, že máme takú funkciu, ktorá nevracia žiadnu hodnotu, v takom prípade, čo zadáme ako návratový typ? Odpoveď je, že používame bezhodnotový typ „void“ na označenie, že funkcia nevracia hodnotu.
V takom prípade sa funkcia nazýva „neplatná funkcia“ a jej prototyp bude podobný
void functionName (param1, param2, ... .param 3);
Poznámka : Je dobrým zvykom zahrnúť vyhlásenie „vrátiť sa“; na konci funkcie neplatnosti kvôli prehľadnosti.
Prenos parametrov do funkcií
Koncept skutočných a formálnych parametrov sme už videli. Vieme tiež, že skutočné parametre odovzdávajú hodnoty funkcii, ktorá je prijímaná parametrami formátu. Toto sa nazýva odovzdávanie parametrov.
V jazyku C ++ máme určité spôsoby odovzdávania parametrov, ako je uvedené nižšie.
Prejdite okolo hodnoty
V programe výmeny dvoch celých čísel, o ktorom sme hovorili už skôr, sme videli, že sme iba prečítali celé čísla „a“ a „b“ v hlavnej časti a odovzdali ich funkcii výmeny. Toto je technika pass by value.
Pri technike odovzdávania parametrov pass by value sa kópie hodnôt skutočných parametrov odovzdávajú formálnym parametrom. Z tohto dôvodu sa skutočné a formálne parametre ukladajú na rôzne miesta v pamäti. Zmeny formálnych parametrov vo vnútri funkcie sa teda neodrážajú mimo nej.
Lepšie to pochopíme, keď opäť navštívime zámenu dvoch čísel.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Prejdite okolo referencie Pass by reference je ďalšia technika používaná v C ++ na prenos parametrov do funkcií. V tejto technike namiesto odovzdávania kópií skutočných parametrov odovzdávame odkazy na skutočné parametre.
Poznámka: Odkazy nie sú ničím iným ako aliasmi premenných alebo jednoduchými slovami, to je iný názov, ktorý sa premennej dáva. Preto premenná a jej referencia zdieľajú rovnaké umiestnenie v pamäti. Referencie sa dozvieme podrobne v našom nasledujúcom návode.
Pri technike pass by reference používame tieto odkazy na skutočné parametre a vo výsledku sa zmeny formálnych parametrov vo funkcii prejavia späť na volajúcu funkciu.
Upravujeme našu funkciu výmeny pre našich čitateľov, aby lepšie pochopili tento koncept.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Prejdite okolo ukazovateľa V C ++ môžeme parametre odovzdávať aj do funkcií pomocou premenných ukazovateľa. Technika pass by pointer produkuje rovnaké výsledky ako metóda pass by reference. To znamená, že formálne aj skutočné parametre zdieľajú rovnaké miesta v pamäti a zmeny vykonané vo funkcii sa prejavia vo volacej funkcii.
Jediný rozdiel v tom, že pri prechode odkazom sa zaoberáme referenciami alebo aliasmi parametrov, zatiaľ čo pri technike pass by pointer používame na odovzdanie parametrov premenné ukazovateľa.
Premenné ukazovateľa sa líšia od referencií, v ktorých ukazovatele ukazovateľa ukazujú na konkrétnu premennú, a na rozdiel od odkazov môžeme premennú, na ktorú ukazuje, zmeniť. Podrobnosti o ukazovateli preskúmame v ďalších príručkách.
Opäť uvádzame zámenu dvoch celých čísel, aby sme demonštrovali techniku prechádzania okolo ukazovateľa.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Predvolené parametre V jazyku C ++ môžeme poskytnúť predvolené hodnoty pre funkčné parametre. V takom prípade, keď vyvoláme funkciu, neurčujeme parametre. Namiesto toho funkcia prevezme predvolené parametre, ktoré poskytuje prototyp.
Nasledujúci príklad demonštruje použitie predvolených parametrov.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Výkon:
Zadajte hodnoty pre a, bac: 10 4 6
Výzva na mathoperáciu s 1 arg: 15
Výzva na mathoperáciu s 2 arg: 20
Výzva na mathoperáciu s 3 arg: 6
Ako je uvedené v príklade kódu, máme funkciu ‘mathoperation’, ktorá preberá tri parametre, z ktorých sme pre dva parametre poskytli predvolené hodnoty. Potom v hlavnej funkcii túto funkciu zavoláme trikrát s iným zoznamom argumentov.
Prvé volanie má iba jeden argument. V takom prípade budú mať ďalšie dva argumenty predvolené hodnoty. Nasledujúci hovor má dva argumenty. V takom prípade bude mať tretí argument predvolenú hodnotu. Tretie volanie obsahuje tri argumenty. V tomto prípade, pretože sme poskytli všetky tri argumenty, budú predvolené hodnoty ignorované.
Upozorňujeme, že pri poskytovaní predvolených parametrov začíname vždy od parametra úplne vpravo. Tiež nemôžeme preskočiť parameter medzi nimi a poskytnúť predvolenú hodnotu pre nasledujúci parameter.
Prejdime teraz k niekoľkým konceptom súvisiacim so špeciálnymi funkciami, ktoré sú dôležité z pohľadu programátora.
Konštantné parametre
Funkciám môžeme tiež odovzdať konštantné parametre pomocou kľúčového slova „const“. Keď je parameter alebo referencia konštanta, nemožno ju vo vnútri funkcie zmeniť.
Všimnite si, že nemôžeme odovzdať parameter const do non-const formálneho parametra. Ale môžeme odovzdať parameter const a non-const do parametra const formal.
Podobne môžeme mať aj const návratový typ. V takom prípade tiež nie je možné upraviť návratový typ.
Pozrime sa na príklad kódu, ktorý používa referencie const.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Výkon:
Zadajte dve čísla, ktoré chcete zameniť: 22 33
a = 2 b = 33
Výsledok pridania: 55
Vo vyššie uvedenom programe máme konštantné formálne parametre. Upozorňujeme, že skutočné parametre sú bežné nekonštantné premenné, ktoré sme úspešne odovzdali. Pretože formálne parametre sú konštantné, nemôžeme ich vo vnútri funkcie upravovať. Takže iba vykonáme operáciu sčítania a vrátime hodnotu.
Ak sa pokúsime upraviť hodnoty a alebo b vo vnútri funkcie, potom kompilátor vydá chybu.
Vložené funkcie
Vieme, že na uskutočnenie funkcie je potrebné interne kompilátor, ktorý pred odovzdaním kontroly funkcii uloží stav programu na zásobník.
Po návrate funkcie musí kompilátor načítať stav programu späť a pokračovať od miesta, kde odišiel. To predstavuje réžiu. Preto v C ++ vždy, keď máme funkciu pozostávajúcu z niekoľkých príkazov, existuje zariadenie, ktoré jej umožňuje expandovať inline. To sa robí vložením funkcie.
Inline funkcie sú teda funkcie, ktoré sa za behu rozširujú, čo šetrí úsilie o vyvolanie funkcie a vykonanie úprav zásobníka. Ale aj keď urobíme funkciu ako vloženú, kompilátor nezaručuje, že sa za behu rozšíri. Inými slovami, je úplne závislé od kompilátora, či funkciu zaradí alebo nie.
Niektoré prekladače zisťujú menšie funkcie a rozširujú ich vložené, aj keď nie sú vyhlásené za vložené.
Nasleduje príklad vloženej funkcie.
inline int addition(const int &a,const int &b){ return (a+b); }
Ako je uvedené vyššie, pred definíciou funkcie predchádza kľúčové slovo „inline“, aby bola funkcia inline.
Používanie štruktúr vo funkciách
Štruktúrne premenné môžeme odovzdávať ako parametre, aby fungovali podobným spôsobom, keď ako parametre odovzdávame bežné premenné.
Toto je uvedené v nasledujúcom príklade.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Výkon:
Zadajte meno: Vedang
Zadajte vek: 22
Zadajte plat: 45000,00
Štruktúra PersonInfo:
Vek: 22 rokov
Názov: Vedang
Plat: 45000

Ako je uvedené v predchádzajúcom programe, odovzdáme štruktúru, ktorá bude fungovať podobným spôsobom ako iné premenné. Načítame hodnoty členov štruktúry zo štandardného vstupu a potom odovzdáme štruktúru funkcii, ktorá štruktúru zobrazí.
Záver
Toto bolo všetko o základných funkciách v C ++.
Viac o statických funkciách v C ++ sa dozvieme v našich pripravovaných tutoriáloch.
=> Skontrolujte kompletné školiace série C ++ ZDARMA tu.
Odporúčané čítanie
- Pythonove funkcie
- Funkcie dátumu a času v C ++ s príkladmi
- Funkcie Unix Shell Script s parametrami a návratom
- Výukový program pre Python DateTime s príkladmi
- Dôležité funkcie LoadRunner používané v skriptoch VuGen s príkladmi
- Funkcie reťazca Python
- Výukový program pre hlavné funkcie Pythonu s praktickými príkladmi
- Funkcie priateľov v C ++