De ce funcții
O funcție (subprogram) grupează un calcul sub un nume, ca să-l refolosești și să împarți problema în pași mici.
Funcție cu rezultat
#include <iostream>
using namespace std;
int patrat(int x) {
return x * x;
}
int main() {
cout << patrat(5);
return 0;
}Afișează 25. Tipul din fața numelui (int) este tipul rezultatului; return îl trimite înapoi.
Funcție void
O funcție void execută ceva, dar nu întoarce niciun rezultat:
#include <iostream>
using namespace std;
void salut(int n) {
for (int i = 0; i < n; i++)
cout << "Salut!" << "\n";
}
int main() {
salut(3);
return 0;
}Valoare vs. referință
Prin valoare (implicit): funcția primește o COPIE; originalul nu se schimbă.
Prin referință (cu &): funcția lucrează direct pe variabila originală.
#include <iostream>
using namespace std;
void schimba(int &a, int &b) {
int aux = a;
a = b;
b = aux;
}
int main() {
int x = 3, y = 9;
schimba(x, y);
cout << x << " " << y;
return 0;
}Afișează 9 3: datorită lui &, interschimbarea se vede în main.
Atenție
Fără &, funcția ar interschimba doar copiile, iar afișarea ar rămâne 3 9. La subiectele de BAC, prezența sau absența lui & schimbă complet răspunsul.
Reține
Tipul scris în fața numelui este tipul rezultatului, trimis înapoi cu return; o funcție void nu întoarce nimic. Un parametru fără & primește o copie (originalul rămâne neschimbat), unul cu & lucrează direct pe variabila originală.
Greșeli frecvente
- Funcție declarată
intfărăreturnpe toate ramurile: rezultat imprevizibil. - Parametrii prin valoare NU modifică argumentele originale, oricât i-ai modifica în funcție.
- Variabilele locale ale funcției dispar la ieșire; ce vrei să păstrezi întorci cu
returnsau prin referință.