Multe limbi de programare utilizează funcții. O funcție este un set de instrucțiuni pentru a efectua o anumită sarcină. Codul principal poate fi împărțit în mai multe funcții și poate fi apelat. Există două moduri de a apela o funcție, cum ar fi apelul prin valoare și apelul prin referință. În metoda apel prin valoare, copii ale variabilelor sunt transmise în funcție. Dacă există o modificare a valorii funcției, aceasta nu modifică valoarea inițială. În apel prin referință, modificările variabilei din interiorul funcției reflectă valoarea inițială. diferența cheie între apel prin valoare și apel prin referință este faptul că, în apel prin valoare, copia variabilelor este transmisă funcției și în apel prin referință, adresele variabilelor sunt transmise funcției. Acest articol discută diferența dintre apelul prin valoare și apelul prin referință.
1. Prezentare generală și diferență cheie
2. Ce este Call by Value
3. Ce este Call by Reference
4. Asemănări între apelul în funcție de valoare și apelul prin referință
5. Comparație comparativă - Call by Value vs Call by Reference în formularul tabular
6. rezumat
În apelul după valoare, copii ale variabilelor sunt transmise funcției. Funcția poate modifica valoarea copiată, dar nu modifică valoarea inițială. Acest concept poate fi ușor de înțeles prin schimbarea programului de două numere. Consultați programul de mai jos C scris folosind mediul Coduri blocate.
Figura 01: Program de schimbare a două numere
Conform programului prezentat mai jos, variabila 'a' are valoarea 20, iar variabila 'b' are valoarea 30. Când se apelează funcția swap (a, b), aceste două valori sunt transmise funcției swap. În funcția swap, "a" este copiată în "x" iar "b" este copiată în "y". Acum, "x" are valoarea 20 și "y" are valoarea 30. Folosind variabila temp, cele două valori sunt schimbate. Atunci când se imprimă valoarea "x" și "y" în interiorul acelei funcții swap, ieșirea va da 30 pentru "x" și 20 pentru "y". Când execuția funcției de swap este terminată, comanda revine la funcția principală. Când tipăriți valorile "a" și "b", în funcția principală, rezultatele vor fi valorile inițiale. Sunt 20 pentru "a" și 30 pentru "b". Modificările efectuate prin utilizarea funcției swap nu se reflectă în programul principal.
Figura 02: Rezultatul programului de schimbare
"x" și "y" în interiorul funcției de swap are valorile swapped care sunt 30 și 20, dar aceste valori nu pot fi utilizate în programul principal. Chiar dacă valorile "x" și "y" au schimbat valori, ele sunt funcții swap variabile locale și nu pot fi accesate de funcția principală. Pentru a evita această problemă, se poate utiliza apelul prin referință.
În această metodă, adresele variabilelor sunt trimise la funcție. Consultați programul de mai jos C scris folosind mediul Coduri blocate.
Figura 03: Schimbarea a două numere folosind Indicatorii
Conform exemplului dat mai jos, valoarea "a" este de 20 iar valoarea lui "b" este 30. În loc să treacă copii ale "a" și "b", programatorul poate trimite adresele "a" și "b" "folosind funcția swap (& a, & b).
Figura 04: Ieșirea programului de schimbare utilizând indicatorii
În swap, funcția ar trebui să utilizeze pointeri deoarece adresele sunt transmise, iar acele adrese ar trebui să fie păstrate de indicatori. În interiorul funcției, adresa "a" este copiată în "x" și adresa "b" este copiată în "y". Folosind variabila temp, valorile "x" și "y" sunt schimbate. În acest apel prin metoda de referință, modificările din cadrul funcției de swap reflectă în programul principal. Imprimarea valorilor "a" și "b" în principal va da valorile schimbate. Acum, rezultatul 'a' este de 30 și 'b' este 20. Deoarece funcția ia adresa variabilelor, modificările efectuate în interiorul funcției afectează valorile inițiale.
Apel prin valoare vs apel prin referință | |
În apelul în funcție de valoare, copii ale variabilelor sunt transferate în funcție, astfel încât modificările efectuate în interiorul funcției nu vor modifica valoarea inițială. | În apel prin referință, adresa variabilelor este transmisă funcției, astfel încât modificările făcute pentru variabilele din interiorul funcției vor modifica valoarea inițială. |
Modificarea valorii | |
La apelul în funcție de valoare, valoarea inițială nu se modifică. | În apel prin referință, valorile inițiale se schimbă. |
Apelul prin valoare și apelul prin referință sunt metode de apelare a funcției. Diferența dintre apelul prin valoare și apelul prin referință este că, în apelul după valoare, copiile variabilelor sunt transmise funcției și în apel prin referință, adresele variabilelor sunt transmise funcției. Utilizarea apelului prin valoare sau apel prin referință depinde de sarcina de efectuat.
Puteți descărca versiunea PDF a acestui articol și o puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici Diferența dintre apelul în funcție de valoare și apelul prin referință
1.Jaiswal, Haresh. "11 Call by Value vs Call by Reference." YouTube, YouTube, 24 decembrie 2015. Disponibil aici