Ce sunt parametrii?
Parametrii sunt variabile speciale declarate in parantezele unei functii. Ele primesc valori din exterior atunci cand functia este apelata, permitandu-i sa lucreze cu date diferite de fiecare data.
Fara parametri, o functie face mereu acelasi lucru. Cu parametri, functia devine flexibila - ca un sablon care se adapteaza la datele pe care le primeste.
Imaginati-va un chelner (functia). Fara parametri, chelnerul aduce mereu aceeasi mancare. Cu parametri, ii spui: "Vreau pizza si suc de portocale" - el primeste comanda ta (parametrii) si serveste exact ce ai cerut.
Acelasi chelner (aceeasi functie) serveste clienti diferiti cu comenzi diferite (argumente diferite)!
Doua nume, doua roluri
Exista doi termeni importanti care se confunda des:
Parametru formal = variabila din declaratia functiei (e ca un "loc gol" care asteapta o valoare).
Argument (parametru actual) = valoarea concreta pe care o trimiti la apel (e valoarea care "umple" locul gol).
In practica, multi programatori folosesc "parametru" si "argument" interschimbabil. Important e sa intelegi mecanismul.
Functii cu mai multi parametri
O functie poate avea oricat de multi parametri, separati prin virgula. Fiecare parametru trebuie sa aiba tipul si numele lui.
Functia primeste o COPIE
In mod implicit (fara &), cand trimiti o variabila ca argument, functia primeste o copie a valorii. Orice modificare in functie afecteaza doar copia - variabila originala ramane neschimbata!
Functia lucreaza cu ORIGINALUL - semnul &
Daca adaugi & dupa tipul parametrului, functia primeste variabila originala, nu o copie. Orice modificare in functie se reflecta si in afara ei!
De ce swap NECESITA referinta
Functia swap trebuie sa interschimbe valorile a doua variabile. Fara &, schimba doar copiile - nu se intampla nimic util!
Valori implicite - cand nu dai un argument
Poti da unui parametru o valoare implicita (default). Daca nu furnizezi acel argument la apel, se foloseste valoarea implicita. Daca furnizezi, se foloseste valoarea ta.
La apel, argumentele se completeaza de la stanga. Daca omiti un argument, compilatorul nu stie pe care l-ai omis decat daca cele optionale sunt toate la sfarsit. Asa, poti omite ultimul, ultimele doua, etc.