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.
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ță.