Mnogi se programski jezici koriste funkcijama. Funkcija je skup izjava za izvođenje određenog zadatka. Glavni se kod može podijeliti u nekoliko funkcija i nazvati ih. Postoje dva načina pozivanja funkcije poput poziva prema vrijednosti i poziva referencom. Kod poziva metodom vrijednosti, kopije varijabli se prosljeđuju u funkciju. Ako dođe do promjene vrijednosti funkcije, ona ne mijenja izvornu vrijednost. Promjene varijable unutar funkcije odražavaju izvornu vrijednost. ključna razlika između poziva prema vrijednosti i poziva po referenci je to, u pozivu po vrijednosti, kopija varijabli se prosljeđuje u funkciju, a u pozivu na referencu, adrese varijabli se prenose u funkciju. Ovaj članak govori o razlici između vrijednosti poziva i poziva prema referenci.
1. Pregled i ključne razlike
2. Što je poziv po vrijednosti
3. Što je poziv prema referenci
4. Sličnosti između poziva prema vrijednosti i pozivanja po referenci
5. Usporedba - Usporedba poziva prema vrijednosti u odnosu na poziv referencom u tabličnom obliku
6. Sažetak
Kod vrijednosti po vrijednosti, kopije varijabli se prosljeđuju u funkciju. Funkcija može promijeniti kopiranu vrijednost, ali ne mijenja izvornu vrijednost. Ovaj se koncept lako može razumjeti zamjenom programa s dva broja. Pogledajte niži program C napisan u okruženju Code Blocks.
Slika 01: Program za zamjenu dva broja
Prema dolje navedenom programu, varijabla 'a' ima vrijednost 20, a varijabla 'b' vrijednost 30. Kada se poziva swap (a, b) funkcija, ove dvije vrijednosti prenose se u funkciju swap. U funkciji swap, 'a' se kopira u 'x', a 'b' se kopira u 'y'. Sada, 'x' ima vrijednost 20, a y y vrijednost 30. Pomoću temp varijable dvije vrijednosti se mijenjaju. Kada ispisujete vrijednosti 'x' i 'y' unutar te funkcije swapa, izlaz će dati 30 za 'x' i 20 za 'y'. Kad se izvrši zamjena funkcije, kontrola se vraća na glavnu funkciju. Kada ispisujete vrijednosti 'a' i 'b', u glavnoj funkciji rezultati će biti izvorne vrijednosti. Oni su 20 za 'a' i 30 za 'b'. Promjene izvršene korištenjem swap funkcije ne odražavaju se u glavnom programu.
Slika 02: Rezultati programa izmjene
'x' i 'y' u funkciji swap imaju zamijenjene vrijednosti koje su 30 i 20, ali te se vrijednosti ne mogu koristiti u glavnom programu. Iako su 'x' i 'y' zamijenjene vrijednosti, one su lokalne varijable za zamjenu funkcije i ne može im se pristupiti glavna funkcija. Da bi se izbjegao ovaj problem, može se koristiti pozivom putem reference.
U ovoj se metodi adrese varijabli šalju funkciji. Pogledajte niži program C napisan u okruženju Code Blocks.
Slika 03: Mijenjanje dva broja pomoću pokazivača
Prema navedenom primjeru u nastavku, vrijednost 'a' iznosi 20, a vrijednost 'b' je 30. Umjesto da predaju kopije 'a' i 'b', programer može poslati adrese 'a' i 'b 'pomoću funkcije, swap (& a, & b).
Slika 04: Rezultati programa izmjene pomoću pokazivača
U swap-u bi funkcija trebala koristiti pokazivače, jer su adrese proslijeđene, a te adrese trebaju držati pokazivači. Unutar funkcije, adresa 'a' kopira se na 'x', a adresa 'b' kopira se na 'y'. Pomoću varijable temp zamjenjuju se vrijednosti 'x' i 'y'. U ovom pozivu referentnom metodom promjene unutar funkcije swap odražavaju se u glavnom programu. Ako se u glavnom ispisuju vrijednosti 'a' i 'b, dobit ćete zamijenjene vrijednosti. Sada je izlaz 'a' 30, a 'b' 20. Budući da funkcija uzima adresu varijabli, promjene u funkciji utječu na izvorne vrijednosti.
Pozivi prema vrijednosti prema pozivu prema referenci | |
Kod vrijednosti po vrijednosti, kopije varijabli se prosljeđuju u funkciju, tako da promjene napravljene unutar funkcije neće mijenjati izvornu vrijednost. | Adresa poziva, referenca se upućuje u funkciju, tako da će promjene koje se izvršavaju za varijable unutar funkcije modificirati izvornu vrijednost. |
Izmjena vrijednosti | |
Kod poziva po vrijednosti, izvorna vrijednost se ne mijenja. | U pozivu putem reference, izvorne vrijednosti se mijenjaju. |
Pozivi prema vrijednosti i pozivi referencom su načini pozivanja funkcije. Razlika između poziva prema vrijednosti i poziva prema referenci je u tome što su u pozivu po vrijednosti kopije varijabli prenesene u funkciju, a u pozivu po referenci, adrese varijabli se prenose u funkciju. Upotreba poziva prema vrijednosti ili pozivanja po referenci ovisi o zadatku koji treba obaviti.
Možete preuzeti PDF verziju ovog članka i koristiti je za izvanmrežne svrhe, prema napomeni. Ovdje preuzmite PDF verziju. Razlika između vrijednosti i poziva po pozivu
1.Jaiswal, Haresh. "11 poziv prema vrijednosti u odnosu na referentni poziv." YouTube, YouTube, 24. prosinca 2015. Dostupno ovdje