Razlika med klicem po vrednosti in klicem po referenci

Ključna razlika - klic po vrednosti in klic po referenci
 

Številni programski jeziki uporabljajo funkcije. Funkcija je niz stavkov za izvajanje določene naloge. Glavno kodo lahko razdelimo na več funkcij in jih pokličemo. Obstajata dva načina klicanja funkcije, kot sta klic po vrednosti in klic po referenci. Pri klicu po vrednosti se kopije spremenljivk prenesejo v funkcijo. Če pride do spremembe vrednosti funkcije, ne spremeni prvotne vrednosti. Spremembe spremenljivke znotraj funkcije odražajo prvotno vrednost v referenčnem klicu. The ključna razlika med klicem po vrednosti in klicem po referenci je to, pri klicu po vrednosti se kopija spremenljivk prenese v funkcijo in v klicu po referencah naslovi spremenljivk se prenesejo na funkcijo.  Ta članek govori o razliki med vrednostjo in klicem po referenci.

VSEBINA

1. Pregled in ključne razlike
2. Kaj je klic po vrednosti
3. Kaj je klic po referenci
4. Podobnosti med klicem po vrednosti in klicem po referenci
5. Primerjava drug ob drugem - klic po vrednosti in klic po referenci v tabeli
6. Povzetek

Kaj je klic po vrednosti?

V vrednosti po klicu se kopije spremenljivk prenesejo v funkcijo. Funkcija lahko spremeni to kopirano vrednost, vendar ne spremeni prvotne vrednosti. Ta koncept je enostavno razumeti z zamenjavo dveh številčnih programov. Glejte spodnji program C, napisan v okolju Code Blocks.

Slika 01: Program za zamenjavo dveh številk

V skladu s spodnjim programom ima spremenljivka 'a' vrednost 20, spremenljivka 'b' pa vrednost 30. Pri klicanju funkcije swap (a, b) se ti dve vrednosti preneseta na funkcijo swap. V funkciji zamenjave je 'a' kopirano v 'x' in 'b' kopirano v 'y'. Zdaj ima "x" vrednost 20 in "y" vrednost 30. Z uporabo spremenljivke temp se dve vrednosti zamenjata. Ko natisnete vrednosti 'x' in 'y' znotraj te funkcije izmenjave, bo izhodni podatek 30 za 'x' in 20 za 'y'. Ko je izvedba funkcije zamenjave končana, se nadzor vrne v glavno funkcijo. Pri tiskanju vrednosti 'a' in 'b' bodo v glavni funkciji rezultati izvirne vrednosti. 20 sta za 'a' in 30 za 'b'. Spremembe, izvedene s funkcijo swap, se ne odražajo v glavnem programu.

Slika 02: Rezultat programa zamenjave

"x" in "y" v funkciji swap imata zamenjani vrednosti, ki sta 30 in 20, vendar teh vrednosti v glavnem programu ni mogoče uporabiti. Čeprav imata "x" in "y" zamenjani vrednosti, sta lokalni spremenljivki za izmenjavo funkcij in do nje ne more dostopati glavna funkcija. Če se želite izogniti tej težavi, lahko uporabite klic po referenci.

Kaj je klic po referenci?

Pri tej metodi se naslovi spremenljivk pošljejo funkciji. Glejte spodnji program C, napisan v okolju Code Blocks.

Slika 03: Zamenjava dveh števil z uporabo kazalcev

V skladu s spodnjim primerom je vrednost 'a' 20, vrednost 'b' pa 30. Namesto, da pošljete kopiji 'a' in 'b', lahko programer pošlje naslovi 'a' in 'b 'z uporabo funkcije, swap (& a, & b).

Slika 04: Izhod programa izmenjave s kazalci

Pri izmenjavi bi morala funkcija uporabljati kazalce, ker so naslovi predani, ti naslovi pa naj jih vodijo kazalci. Znotraj funkcije je naslov 'a' kopiran na 'x', naslov 'b' pa kopiran na 'y'. Z uporabo spremenljivke temp se vrednosti "x" in "y" zamenjata. V tem pozivu po referenčni metodi se spremembe znotraj funkcije zamenjave odražajo v glavnem programu. Če v glavnem natisnete vrednosti 'a' in 'b', dobite zamenjane vrednosti. Zdaj je izhod 'a' 30 in 'b' 20. Ko funkcija prevzame naslov spremenljivk, spremembe, ki so izvedene znotraj funkcije, vplivajo na prvotne vrednosti.

Kakšna je podobnost med klicem po vrednosti in klicem po referenci?

  • Ti dve metodi se uporabljata za klicanje funkcij / metod.

Kakšna je razlika med klicem po vrednosti in klicem po referenci?

Klic po vrednosti in klic po referenci

V vrednosti po klicu se kopije spremenljivk prenesejo v funkcijo, tako da spremembe, narejene znotraj funkcije, ne bodo spremenile prvotne vrednosti. V referenčnem klicu se naslov spremenljivk prenese v funkcijo, tako da bodo spremembe, spremenjene za spremenljivke znotraj funkcije, spremenile prvotno vrednost.
 Sprememba vrednosti
Pri klicu po vrednosti se prvotna vrednost ne spreminja. V referenčnem klicu se prvotne vrednosti spreminjajo.

Povzetek - Klic po vrednosti in klic po referenci

Klic po vrednosti in klic po referenci sta načina klicanja funkcije. Razlika med klicem po vrednosti in klicem po referenci je v tem, da se pri klicu po vrednosti kopije spremenljivk prenesejo na funkcijo, v klicu pa po referenci, naslovi spremenljivk se prenesejo na funkcijo. Uporaba klica po vrednosti ali klic po referenci je odvisna od naloge, ki jo želite opraviti.

Prenesite PDF različico klica po vrednosti in klic po referenci

Lahko prenesete PDF različico tega članka in jo uporabljate za namene brez povezave, kot je navedeno v navodilu. Prenesite PDF različico tukaj Razlika med klicem po vrednosti in klicem po referenci

Referenca:

1.Jaiswal, Haresh. "11 klic po vrednosti proti klicu po referenci." YouTube, YouTube, 24. december 2015. Na voljo tukaj