Poziv prema referenci u odnosu na poziv prema vrijednosti: razlika i usporedba

Funkcije se u programu mogu pozvati na dva načina. Jedna metoda je pozivom po referenci, a sljedeća metoda je pozivom po vrijednosti. Ove se metode mogu razlikovati na temelju vrste vrijednosti koje se prosljeđuju parametrima.

Parametri koji se u njima koriste nazivaju se stvarni parametri. Koriste se u mnogim programskim jezicima kao što su C, C++ i Java.

Ključni za poneti

  1. Poziv prema referenci prosljeđuje memorijsku adresu varijable funkciji, dok poziv prema vrijednosti šalje kopiju vrijednosti varijable.
  2. S pozivom po referenci, promjene napravljene unutar funkcije izravno utječu na izvornu varijablu, dok poziv po vrijednosti ostavlja izvornu varijablu nepromijenjenom.
  3. Poziv prema referenci je memorijski učinkovitiji od poziva prema vrijednosti, ali može dovesti do neželjenih nuspojava ako se njime ne upravlja pažljivo.

Poziv prema referenci u odnosu na poziv prema vrijednosti

Bijeli ocat, koji se koristi za čišćenje ili kuhanje, dobiva se fermentacijom destiliranog alkohola, što rezultira bistrom tekućinom oštrog okusa. Jabučni ocat dobiva se fermentacijom šećera iz jabuka, a ima blaži, blago slatki okus, koristi se u preljevima za salate i marinadama.

Poziv prema referenci u odnosu na poziv prema vrijednosti

Metoda poziva po referenci koristi se za pristup stvarnom argumentu koji je poziv funkcije. To znači da se promjene u parametru vrše tek nakon prosljeđivanja argumenta.

Koristi istu dodjelu memorije koja se koristi u stvarnim parametrima. Kada poziva funkciju, umjesto kopiranja varijabli, sama adresa se koristi u pozivu po referencama.

Poziv po vrijednosti je potprogram koji prosljeđuje stvarne podatke parametara koji se koriste u potprogramu.

U ovoj metodi, kada pozivate funkciju, prosljeđujete vrijednost varijabli argumenata u pozvanoj funkciji tako da pozvana funkcija radi na vrijednosti. Ova se promjena neće odraziti na pozvanu funkciju.

Tabela za usporedbu

Parametri usporedbePoziv na pozivPoziv prema vrijednosti
VarijablaVarijabla je proslijeđena.Kopija varijable je proslijeđena.
Vrijednost varijableNapravljene promjene utjecat će na vanjsku funkciju.Napravljene promjene neće utjecati na vanjsku funkciju.
Izvorna vrijednostModificiran je.Nije modificiran.
SigurnosniStvarni argumenti nisu sigurni.Stvarni argumenti su sigurni.
DefinicijaZa prosljeđivanje koristi samu varijablu.Za prosljeđivanje koristi kopiju varijable.

Što je poziv po referenci?

To je metoda koja se koristi za prosljeđivanje argumenata funkciji. Za pohranjivanje adresa varijabli koriste se pokazivačke varijable. U ovoj metodi stvarni argumenti nisu sigurni.

Također pročitajte:  Nitro vs Nitro Classic: razlika i usporedba

Moguće je napraviti slučajne izmjene. Važno je pažljivo rukovati argumentima. Pomaže u izbjegavanju greškom napravljenih promjena.

Neće stvoriti nikakve duple podatke jer sadrži samo jednu vrijednost tako da može spasiti memorijski prostor. Ako osoba pročita kod, neće moći saznati jesu li vrijednosti izmijenjene u ovom kodu.

U ovoj metodi, doživotno jamstvo je veliki problem. To će postati opasnost ako radite s višenitnim programima i lambdama. Da biste proglasili poziv referencom, trebate proslijediti adresu.

Nazovite referencom kada je u pitanju C programiranje. Izravno pristupa podatkovnim stavkama i izvršava funkcije na njima. Ali morate biti oprezni jer su pokazivači uključeni u to.

Ako znate određeni status podatkovne stavke, pozovite referentnu metodu ID savršen. Izmjena kopije podataka neće učiniti ništa korisno

Poziv prema referenci ima opasnosti koje nema poziv prema vrijednosti. Možete nenamjerno ponovno dodijeliti vrijednost pokazivaču i izgubiti ga u memoriji.

Što je poziv prema vrijednosti?

U ovoj metodi promjene napravljene unutar funkcije parametra neće imati nikakav učinak na argument. Swap program djeluje kao najbolji primjer poziva prema vrijednosti programa.

Objašnjava da se vrijednost ne mijenja iako se mijenja unutar funkcije. U Java, poziv metode prema vrijednosti znači pozivanje metode sa svojim parametrom kao vrijednošću.

Kod ove metode parametri se pohranjuju na različitim memorijskim mjestima. Ako napravite bilo kakvu promjenu unutar lokacije, stvarni parametar pozivatelja neće utjecati.

Ova metoda je najbolja jer se izvorna vrijednost ne mijenja. Ali ne možete napraviti nikakve promjene na stvarnim varijablama. Stvarni argumenti bit će sigurni u ovoj metodi jer ne možete slučajno unijeti promjene. 

Također pročitajte:  Autorizacija naspram autentifikacije: razlika i usporedba

Ova metoda čuva podatak jer ne mijenja izvornu varijablu. Ovdje su argumenti varijable. Promjena varijable u tijelu funkcije nije izravna. Složeni izrazi ponekad mogu funkcionirati kao argumenti.

Nije memorijski učinkovit jer se za istu varijablu stvaraju dvije kopije. Ako je veličina podataka velika, metoda poziva prema vrijednosti neće ih adresirati. U tom slučaju, programeri bi se trebali odlučiti za poziv referentnom metodom. 

Glavne razlike između poziva po referenci i poziva po vrijednosti

  1. Izvorna vrijednost se mijenja u pozivu referencom. S druge strane, u pozivu prema vrijednosti izvorna vrijednost se ne mijenja.
  2. Poziv prema referenci podržavaju programski jezici, ali nije zadano. S druge strane, poziv prema vrijednosti radi zadano u programskim jezicima.
  3. U Call by reference, sve promjene napravljene u varijabli također će utjecati na varijablu izvan funkcije. S druge strane, u pozivu prema vrijednosti, sve promjene napravljene u varijabli neće utjecati na varijablu izvan funkcije.
  4. Poziv prema referenci omogućuje vam da napravite promjene u vrijednosti varijable. S druge strane, poziv prema vrijednosti neće vam dopustiti da napravite promjene.
  5. U pozivu prema referenci, adresa vrijednosti će biti proslijeđena. Ali u pozivu prema referenci, kopija vrijednosti će biti proslijeđena. 
Reference
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Zadnje ažuriranje: 22. srpnja 2023

točka 1
Jedan zahtjev?

Uložio sam mnogo truda u pisanje ovog posta na blogu kako bih vam pružio vrijednost. Bit će mi od velike pomoći ako razmislite o tome da to podijelite na društvenim medijima ili sa svojim prijateljima/obitelji. DIJELJENJE JE ♥️

Ostavite komentar

Želite li spremiti ovaj članak za kasnije? Kliknite srce u donjem desnom kutu da biste ga spremili u svoj okvir za članke!