Documente Academic
Documente Profesional
Documente Cultură
și cei efectivi
Fie următorul program, în care funcția cmmdc returnează cel mai mare
divizor comun al parametrilor:
#include <iostream>
using namespace std;
Parametri formali
int cmmdc(int a , int b){
while(b != 0)
{
int r = a % b;
a = b;
b = r;
}
return a;
}
int main(){
int x = 24, y = 18;
cout << cmmdc(x , y) << endl; // 6
Parametri actuali
cout << cmmdc(x, y + 2) << endl; // 4 (efectivi)
cout << cmmdc(x , 36) << endl; // 12
cout << cmmdc(26 , 39) << endl; // 13
cout << cmmdc(8.5 , 12.56) << endl; // 4
return 0;
}
Mecanismele de transmitere a
parametrilor în C++
Există două modalități de transmitere a parametrilor:
Exemplu:
#include <iostream>
using namespace std;
cout << "După apelul functiei cmmdc, x = " << x << " si y = " << y << endl;
return 0;
} Nu se modifica!!
Constatăm că deși în funcția cmmdc parametrii formali a și b se
modifică, în main(), după apelul funcției cmmdc(), parametrii
actuali x și y au valorile anterioare.
Exemplu:
#include <iostream>
using namespace std;
Referinta!!
int main(){
int x = 24;
cout << "x = " << x << endl;
dublare(x);
Este modificata!
cout << "x = " << x << endl;
return 0;
}
Pentru exemplificare să vedem câteva variante pentru o funcție care determină oglinditul unui
număr natural, precum și modul de apelare:
Parametri de intrare – funcția are un singur parametru, de intrare, transmis prin valoare, prin
care primește un număr pentru care determină oglinditul. Rezultatul va fi returnat de către
funcție, iar apelul se va face într-o expresie.
int ogl(int n)
{
int r = 0;
while(n)
r = 10 * r + n % 10, n /= 10;
return r;
}
int main(){
int a;
cin >> a;
cout << ogl(a);
return 0;
}
un parametru de intrare, transmis prin valoare, prin care primește un număr pentru care
determină oglinditul
un parametru de ieșire, transmis prin referință, prin care întoarce rezultatul