A funcția în C este un set de instrucțiuni care, atunci când sunt apelate, îndeplinesc o anumită sarcină. Este elementul de bază al unui program C care oferă modularitate și reutilizare a codului. Instrucțiunile de programare ale unei funcții sunt incluse în interior { } bretele , având anumite semnificații și efectuând anumite operații. Ele mai sunt numite subrutine sau proceduri în alte limbi.
În acest articol, vom afla despre funcții, definiția funcției. declarație, argumente și parametri, valori returnate și multe altele.
Sintaxa funcțiilor în C
Sintaxa funcției poate fi împărțită în 3 aspecte:
- Declarație de funcție Definiție de funcție Apeluri de funcție
Declarații de funcție
Într-o declarație de funcție, trebuie să furnizăm numele funcției, tipul returnat și numărul și tipul parametrilor acesteia. O declarație de funcție îi spune compilatorului că există o funcție cu numele dat definit în altă parte în program.
Sintaxă
return_type name_of_the_function ( parameter_1 , parameter_2 );>
Numele parametrului nu este obligatoriu la declararea funcțiilor. De asemenea, putem declara funcția fără a folosi numele variabilelor de date.
Exemplu
int sum (int a , int b ); int sum (int , int);>

Declarație de funcție
Notă: O funcție din C trebuie să fie întotdeauna declarată global înainte de a o apela.
Definiția funcției
Definiția funcției constă din instrucțiuni reale care sunt executate atunci când funcția este apelată (adică atunci când controlul programului vine la funcție).
O funcție C este în general definită și declarată într-un singur pas, deoarece definiția funcției începe întotdeauna cu declarația funcției, așa că nu trebuie să o declarăm în mod explicit. Exemplul de mai jos servește atât ca definiție a funcției, cât și ca declarație.
return_type function_name (para1_type para1_name, para2_type para2_name ) { // body of the function }> 
Definiția funcției în C
Apel de funcție
Un apel de funcție este o instrucțiune care indică compilatorului să execute funcția. Folosim numele funcției și parametrii în apelul funcției.
În exemplul de mai jos, prima funcție de sumă este apelată și 10,30 sunt transmise funcției de sumă. După ce apelul funcției suma a și b este returnată și controlul este, de asemenea, returnat înapoi la funcția principală a programului.

Funcționarea funcției în C
Notă: Apelul de funcție este necesar pentru a aduce controlul programului la definiția funcției. Dacă nu sunt apelate, instrucțiunile funcției nu vor fi executate.
Exemplu de funcție C
C
// C program to show function> // call and definition> #include> // Function that takes two parameters> // a and b as inputs and returns> // their sum> int> sum(>int> a,>int> b)> {> >return> a + b;> }> // Driver code> int> main()> {> >// Calling sum function and> >// storing its value in add variable> >int> add = sum(10, 30);> > >printf>(>'Sum is: %d'>, add);> >return> 0;> }> |
>
cpp este egal
>Ieșire
Sum is: 40>
După cum am observat, nu am folosit declarația explicită a funcției. Pur și simplu am definit și numit funcția.
Tip de returnare a funcției
Tipul de returnare al funcției spune ce tip de valoare este returnat după ce toate funcțiile sunt executate. Când nu dorim să returnăm o valoare, putem folosi tipul de date void.
Exemplu:
int func(parameter_1,parameter_2);>
Funcția de mai sus va returna o valoare întreagă după rularea instrucțiunilor în interiorul funcției.
Notă: O singură valoare poate fi returnată dintr-o funcție C. Pentru a returna mai multe valori, trebuie să folosim pointeri sau structuri.
Argumente ale funcției
Argumentele funcției (cunoscute și ca Parametrii funcției) sunt datele care sunt transmise unei funcții.
Exemplu:
int function_name(int var1, int var2);>
Condiții de returnare Tipuri și argumente
În limbajul de programare C, funcțiile pot fi apelate fie cu sau fără argumente și pot returna valori. Ele pot returna sau nu valori la funcțiile de apelare.
- Funcție fără argumente și fără valoare returnată
- Funcție fără argumente și cu valoare returnată
- Funcție cu argument și fără valoare returnată
- Funcție cu argumente și cu valoare returnată
Pentru a afla mai multe despre argumentele funcției și valorile returnate, consultați articolul – Argumentele funcției și valorile returnate în C .
Cum funcționează funcția C?
Funcționarea funcției C poate fi împărțită în următorii pași, după cum se menționează mai jos:
- Declararea unei funcții: Declararea unei funcții este un pas în care declarăm o funcție. Aici definim tipurile de returnare și parametrii funcției.
- Definirea unei functii: Apelarea funcției: Apelarea funcției este un pas în care apelăm funcția prin trecerea argumentelor în funcție. Executarea funcției: Executarea funcției este un pas în care putem rula toate instrucțiunile din interiorul funcției pentru a obține rezultatul final. Returnarea unei valori: Returnarea unei valori este pasul în care este returnată valoarea calculată după execuția funcției. Ieșirea din funcție este pasul final în care toată memoria alocată variabilelor, funcțiilor etc. este distrusă înainte de a da controlul deplin funcției principale.
Tipuri de funcții
Există două tipuri de funcții în C:
- Funcții de bibliotecă Funcții definite de utilizator

Tipuri de funcții în C
1. Funcția de bibliotecă
O funcție de bibliotecă este denumită și a functie incorporata . Există deja un pachet compilator care conține aceste funcții, fiecare dintre ele având o semnificație specifică și este inclusă în pachet. Funcțiile încorporate au avantajul de a fi direct utilizabile fără a fi definite, în timp ce funcțiile definite de utilizator trebuie să fie declarate și definite înainte de a fi utilizate.
De exemplu:
pow(), sqrt(), strcmp(), strcpy() etc.>
Avantajele funcțiilor bibliotecii C
- Funcțiile C Library sunt ușor de utilizat și optimizate pentru o performanță mai bună.
- Funcțiile bibliotecii C economisesc mult timp, adică timp de dezvoltare a funcțiilor.
- Funcțiile bibliotecii C sunt convenabile, deoarece funcționează întotdeauna.
Exemplu:
C
// C program to implement> // the above approach> #include> #include> // Driver code> int> main()> {> >double> Number;> >Number = 49;> >// Computing the square root with> >// the help of predefined C> >// library function> >double> squareRoot =>sqrt>(Number);> > >printf>(>'The Square root of %.2lf = %.2lf'>,> >Number, squareRoot);> >return> 0;> }> |
>
>Ieșire
The Square root of 49.00 = 7.00>
2. Funcție definită de utilizator
Funcțiile pe care le creează programatorul sunt cunoscute ca funcții definite de utilizator sau funcții personalizate . Funcțiile definite de utilizator pot fi îmbunătățite și modificate în funcție de nevoia programatorului. Ori de câte ori scriem o funcție care este specifică cazului și nu este definită în niciun fișier antet, trebuie să ne declarăm și să ne definim propriile funcții conform sintaxei.
Avantajele funcțiilor definite de utilizator
- Funcțiile modificabile pot fi modificate în funcție de necesități.
- Codul acestor funcții este reutilizabil în alte programe.
- Aceste funcții sunt ușor de înțeles, de depanat și de întreținut.
Exemplu:
tutorial scânteie
C
// C program to show> // user-defined functions> #include> int> sum(>int> a,>int> b)> {> >return> a + b;> }> // Driver code> int> main()> {> >int> a = 30, b = 40;> > >// function call> >int> res = sum(a, b);> >printf>(>'Sum is: %d'>, res);> >return> 0;> }> |
>
>Ieșire
Sum is: 70>
Transmiterea parametrilor la funcții
Datele transmise atunci când funcția este invocată sunt cunoscute sub numele de parametrii actuali. În programul de mai jos, 10 și 30 sunt cunoscuți ca parametri reali. Parametrii formali sunt variabila și tipul de date așa cum este menționat în declarația funcției. În programul de mai jos, a și b sunt cunoscuți ca parametri formali.

Transmiterea parametrilor la funcții
Putem transmite argumente funcției C în două moduri:
- Treci după valoare
- Treceți prin referință
1. Treci după valoare
Parametrul care trece în această metodă copiază valorile din parametrii actuali în parametrii formali ai funcției. Ca urmare, orice modificări efectuate în interiorul funcțiilor nu se reflectă în parametrii apelantului.
Exemplu:
C
// C program to show use> // of call by value> #include> void> swap(>int> var1,>int> var2)> {> >int> temp = var1;> >var1 = var2;> >var2 = temp;> }> // Driver code> int> main()> {> >int> var1 = 3, var2 = 2;> >printf>(>'Before swap Value of var1 and var2 is: %d, %d
'>,> >var1, var2);> >swap(var1, var2);> >printf>(>'After swap Value of var1 and var2 is: %d, %d'>,> >var1, var2);> >return> 0;> }> |
>
>
obțineți lungimea matricei în cIeșire
Before swap Value of var1 and var2 is: 3, 2 After swap Value of var1 and var2 is: 3, 2>
2. Treceți prin referință
Parametrii actuali ai apelantului și parametrii actuali ai funcției se referă la aceleași locații, astfel încât orice modificări efectuate în interiorul funcției sunt reflectate în parametrii actuali ai apelantului.
Exemplu:
C
// C program to show use of> // call by Reference> #include> void> swap(>int> *var1,>int> *var2)> {> >int> temp = *var1;> >*var1 = *var2;> >*var2 = temp;> }> // Driver code> int> main()> {> >int> var1 = 3, var2 = 2;> >printf>(>'Before swap Value of var1 and var2 is: %d, %d
'>,> >var1, var2);> >swap(&var1, &var2);> >printf>(>'After swap Value of var1 and var2 is: %d, %d'>,> >var1, var2);> >return> 0;> }> |
>
>Ieșire
Before swap Value of var1 and var2 is: 3, 2 After swap Value of var1 and var2 is: 2, 3>
Avantajele funcțiilor din C
Funcțiile în C este o caracteristică extrem de utilă a lui C, cu multe avantaje, așa cum este menționat mai jos:
- Funcția poate reduce repetarea acelorași instrucțiuni în program.
- Funcția face codul ușor de citit, oferind modularitate programului nostru.
- Nu există un număr fix de funcții de apelare, acesta poate fi apelat de câte ori doriți.
- Funcția reduce dimensiunea programului.
- Odată ce funcția este declarată, o puteți folosi fără să vă gândiți la funcționarea internă a funcției.
Dezavantajele funcțiilor din C
Următoarele sunt dezavantajele majore ale funcțiilor din C:
- Nu se pot returna mai multe valori.
- Supraîncărcarea memoriei și a timpului datorită alocării cadrelor stivei și transferului de control al programului.
Concluzie
În acest articol, am discutat următoarele puncte despre funcție, așa cum este menționat mai jos:
moștenire java
- Funcția este blocul de cod care poate fi reutilizat de câte ori vrem în interiorul unui program.
- Pentru a folosi o funcție trebuie să apelăm o funcție.
- Declarația funcției include funcția_name, tipul returnat și parametrii.
- Definiția funcției include corpul funcției.
- Funcția este de două tipuri: funcție definită de utilizator și funcție de bibliotecă.
- În funcție, putem în funcție de două tipuri să apelăm după valoare și să apelăm prin referință în funcție de valorile transmise.
Întrebări frecvente despre funcțiile din C
Î1. Definiți funcții.
Răspuns:
Funcțiile sunt blocul de cod care este executat de fiecare dată când sunt apelate în timpul execuției unui program.
Q2. Ce este o declarație anticipată?
Răspuns:
Uneori definim funcția după apelul ei pentru a oferi o mai bună ușurință. În astfel de cazuri, declarăm funcția înainte de definirea și apelul lor. O astfel de declarație se numește Forward Declaration.
Q3. Care este diferența dintre declararea și definirea funcției?
Răspuns:
Datele precum numele funcției, tipul de returnare și parametrul sunt incluse în declarația funcției, în timp ce definiția este corpul funcției. Toate aceste date sunt partajate cu compilatorul în conformitate cu pașii corespunzători.
Î4. Care este diferența dintre argumentele funcției și parametrii?
Răspuns:
Parametrii funcției sunt valorile declarate într-o declarație de funcție. În timp ce, argumentele funcției sunt valorile care sunt transmise în funcție în timpul apelului funcției.
Exemplu:
int func(int x,int y); func(10,20);>Aici, int x și int y sunt parametrii, în timp ce, 10 și 20 sunt argumentele transmise funcției.
Pentru a afla mai multe despre el, consultați acest articol – Diferența dintre argumente și parametri în C .
Î5. Putem returna mai multe valori dintr-o funcție C?
Răspuns:
Nu, în general nu este posibil să returnați mai multe valori dintr-o funcție. Dar putem folosi fie indicatoare la locații de memorie statice sau heap pentru a returna mai multe valori sau putem pune date în structura și apoi returnați structura.
Pentru a afla mai multe despre aceasta, consultați acest articol - Cum să returnați mai multe valori dintr-o funcție în C sau C++?
Î6. Care este parametrul real și formal?
Răspuns:
Parametru formal: Variabilele declarate în prototipul funcției sunt cunoscute ca argumente sau parametri formali.
Parametru real: Valorile care sunt transmise în funcție sunt cunoscute ca argumente sau parametri actuali.