O funcţie poate fi apelată printr-o construcţie urmată de punct şi virgulă, numită
instrucţiune de apel, de forma:
nume_funcţie (lista_parametrilor_efectivi);
Parametri efectivi trebuie să corespundă cu cei formali ca ordine şi tip. La apel,
se atribuie parametrilor formali valorile parametrilor efectivi, după care se execută
instrucţiunile din corpul funcţiei. La revenirea din funcţie, controlul este redat funcţiei
apelante, şi execuţia continuă cu instrucţiunea următoare instrucţiunii de apel, din
funcţia apelantă. O altă posibilitate de a apela o funcţie este aceea în care apelul funcţiei
constituie operandul unei expresii. Acest lucru este posibil doar în cazul în care funcţia
returnează o valoare, folosită în calculul expresiei
Parametri declaraţi în antetul unei funcţii sunt numiţi formali, pentru a sublinia
faptul că ei nu reprezintă valori concrete, ci numai ţin locul acestora pentru a putea
exprima procesul de calcul realizat prin funcţie. Ei se concretizează la execuţie prin
apelurile funcţiei.
Parametri folosiţi la apelul unei funcţii sunt parametri reali, efectivi, concreţi,
iar valorile lor vor fi atribuite parametrilor formali, la execuţie. Utilizarea parametrilor
formali la implementarea funcţiilor şi atribuirea de valori concrete pentru ei, la execuţie,
reprezintă un prim nivel de abstractizare în programare. Acest mod de programare se
numeşte programare procedurală şi realizează un proces de abstractizare prin
parametri.
Variabilele declarate în interiorul unei funcţii, cât şi parametri formali ai acesteia
nu pot fi accesaţi decât în interiorul acesteia. Aceste variabile sunt numite variabile
locale şi nu pot fi accesate din alte funcţii. Domeniul de vizibilitate a unei variabile este porţiunea de cod la a cărei execuţie variabila respectivă este accesibilă. Deci, domeniul
de vizibilitate a unei variabile locale este funcţia în care ea a fost definită.
Exemplu:
int f1(void)
{ double a,b; int c;
. . .
return c; // a, b, c – variabile locale, vizibile doar în corpul funcţiei
}
void main()
{ . . . . . . // variabile a şi b nu sunt accesibile în main()
}
Dacă în interiorul unei funcţii există instrucţiuni compuse (blocuri) care conţin
declaraţii de variabile, aceste variabile nu sunt vizibile în afara blocului.
Prototipurile funcţiilor din biblioteci (predefinite) se găsesc în headere.
Utilizarea unei astfel de funcţii impune doar includerea în program a headerului asociat,
cu ajutorul directivei preprocesor #include.
Programatorul îşi poate crea propriile headere, care să conţină declaraţii de
funcţii, tipuri globale, macrodefiniţii, etc.
Similar cu declaraţia de variabilă, domeniul de valabilitate (vizibilitate) a unei
funcţii este:
fişierul sursă, dacă declaraţia funcţiei apare în afara oricărei funcţii (la nivel global);
funcţia sau blocul în care apare declaraţia.