Diferența dintre Apel după valoare și Apel după referință

Cuprins:

Anonim

În limbajele de programare, funcțiile pot fi invocate în două moduri: care este cunoscut sub numele de Apel prin valoare și Apel prin referință.

În acest tutorial, veți învăța,

  • Ce este metoda apelului prin valoare?
  • Ce este metoda Apel prin referință?
  • Exemplu de apel prin metoda valorii
  • Exemplu de apel prin metoda de referință
  • Apel după valoare vs. Apel prin referință
  • Avantajele utilizării metodei Apel prin valoare
  • Avantajele utilizării apelului prin metoda de referință
  • Dezavantaje ale utilizării apelului prin metoda valorii
  • Dezavantaje ale utilizării apelului prin metoda de referință

Ce este metoda Apel după valoare?

Metoda apelului prin valoare copiază valoarea unui argument în parametrul formal al funcției respective. Prin urmare, modificările aduse parametrului funcției principale nu afectează argumentul.

În această metodă de trecere a parametrilor, valorile parametrilor reali sunt copiați în parametrii formali ai funcției, iar parametrii sunt stocați în locații de memorie diferite. Deci, orice modificare făcută în interiorul funcțiilor nu se reflectă în parametrii reali ai apelantului.

DIFERENȚA CHEIE

  • În metoda Apelare prin valoare, valoarea originală nu este modificată, în timp ce în Metoda apelare prin valoare, valoarea originală este modificată.
  • În Call by value, o copie a variabilei este transmisă, în timp ce în Call by reference, o variabilă în sine este transmisă.
  • În Call by value, argumentele reale și formale vor fi create în diferite locații de memorie, în timp ce în Call by reference, argumentele reale și formale vor fi create în aceeași locație de memorie.
  • Apel după valoare este metoda implicită în limbaje de programare precum C ++, PHP, Visual Basic NET și C #, în timp ce apelul prin referință este acceptat numai în limbajul Java.
  • Apel după valoare, variabilele sunt transmise folosind o metodă simplă, în timp ce Apel prin referință, indicatorii sunt necesari pentru a stoca adresa variabilelor.

Ce este metoda Apel prin referință?

Metoda de apelare prin referință copiază adresa unui argument în parametrul formal. În această metodă, adresa este utilizată pentru a accesa argumentul real utilizat în apelul de funcție. Înseamnă că modificările făcute în parametru modifică argumentul de trecere.

În această metodă, alocarea memoriei este aceeași cu parametrii reali. Toate operațiunile din funcție sunt efectuate pe valoarea stocată la adresa parametrului real, iar valoarea modificată va fi stocată la aceeași adresă.

Exemplu de metodă de apel prin valoare

void main() {int a = 10,void increment(int);Cout << "before function calling" << a;increment(a);Cout << "after function calling" << a;getch();void increment(int x) {int x = x + 1;Cout << "value is" << x;}

Ieșire:

before function calling 10value is 11after function calling 1-0

Deoarece variabila declarată 'a'in main () este diferită de variabila' x 'în increment (). În acest program, numai numele variabilelor sunt similare, dar adresa memoriei lor este diferită și este stocată în locații de memorie diferite.

Exemplu de metodă de apelare prin referință

Public static void(string args[]) {int a = 10;System.out.println("Before call Value of a = ", a);Void increment();System.out.println("After call Value of a = ", a);}Void increment(int x) {int x = x + 1;}

Ieșire:

Before call Value of a =10After call Value of a =11

Deoarece variabila declarată „a” în face referire / indică variabila „a” în main (). Aici numele variabilei este diferit, dar ambele indică / fac referire la aceleași locații de adrese de memorie.

Apel după valoare vs. Apel prin referință

Parametrii Apelați după valoare Apelați prin referință
Definiție În timp ce apelați o funcție, atunci când treceți valori prin copierea variabilelor, aceasta este cunoscută sub numele de „Apel după valori”. În timp ce se apelează o funcție, în limbajul de programare în loc de a copia valorile variabilelor, se utilizează adresa variabilelor, este cunoscută sub numele de „Apelare prin referințe.
Argumente În această metodă, este transmisă o copie a variabilei. În această metodă, este trecută o variabilă în sine.
Efect Modificările făcute într-o copie a variabilei nu modifică niciodată valoarea variabilei în afara funcției. Modificarea variabilei afectează și valoarea variabilei din afara funcției.
Modificarea valorii Nu vă permite să faceți modificări în variabilele reale. Vă permite să modificați valorile variabilelor utilizând apeluri funcționale.
Trecerea variabilei Valorile variabilelor sunt transmise folosind o metodă simplă. Variabilele indicator sunt necesare pentru a stoca adresa variabilelor.
Modificarea valorii Valoarea inițială nu a fost modificată. Valoarea inițială este modificată.
Locația memoriei Argumentele reale și formale vor fi create în diferite locații de memorie Argumentele reale și formale vor fi create în aceeași locație de memorie
Siguranță Argumentele reale rămân sigure, deoarece nu pot fi modificate accidental. Argumentele reale nu sunt sigure. Acestea pot fi modificate accidental, deci trebuie să gestionați cu atenție operațiile de argumentare.
Mod implicit Implicit în multe limbaje de programare precum C ++. PHP. Visual Basic NET și C #. Este acceptat de majoritatea limbajelor de programare precum JAVA, dar nu ca implicit.

Avantajele utilizării metodei Apel prin valoare

Avantaje / beneficii ale unui apel prin metoda valorii:

  • Metoda nu modifică variabila originală, deci păstrează datele.
  • Ori de câte ori o funcție este numită, nu afectați niciodată conținutul actual al argumentelor reale.
  • Valoarea argumentelor reale trecute la argumentele formale, astfel încât orice modificare adusă argumentului formal nu afectează cazurile reale.

Avantajele utilizării apelului prin metoda de referință

Avantaje ale utilizării apelului prin metoda de referință:

  • Funcția poate schimba valoarea argumentului, ceea ce este destul de util.
  • Nu creează date duplicate pentru păstrarea unei singure valori care vă ajută să economisiți spațiu de memorie.
  • În această metodă, nu există o copie a argumentului făcut. Prin urmare, este procesat foarte repede.
  • Vă ajută să evitați modificările făcute din greșeală
  • O persoană care citește codul nu știe niciodată că valoarea poate fi modificată în funcție.

Dezavantaje ale utilizării apelului prin metoda valorii

Iată, dezavantajele / dezavantajele majore ale unui apel prin metoda valorii:

  • Modificările aduse parametrilor reali pot modifica, de asemenea, variabilele de argument corespunzătoare
  • În această metodă, argumentele trebuie să fie variabile.
  • Nu puteți schimba direct o variabilă într-un corp de funcție.
  • Undeva argumentul poate fi expresii complexe
  • Există două copii create pentru aceeași variabilă, care nu este eficientă din punct de vedere al memoriei.

Dezavantaje ale utilizării apelului prin metoda de referință

Iată, dezavantajele majore ale utilizării apelului prin metoda de referință:

  • Garanție puternică, nulă. O funcție care acceptă o referință trebuie să se asigure că intrarea este nulă. Prin urmare, nu este necesară verificarea nulă.
  • Trecerea prin referință face ca funcția să nu fie pură teoretic.
  • O garanție pe viață este o problemă importantă cu referințe. Acest lucru este deosebit de periculos atunci când lucrați cu programe lambdas și multi-thread.