Odlomak

LEKCIJA 18:  Getting More from Functions
Kao što znate do sada, funkcije su centralne za C programiranje. Danas ćete naučiti još neke načine
kako da koristite funkcije u vašim programima, uključujući:

  • Upotreba pointera kao argumenata na funkcije
  • Prosljeđivanje pointera tipa void funkcijama
  • Korištenje funkcija sa varijabilnim brojem argumenata
  • Vraćanje pointera od funkcije

 

 

 

Prosljeđivanje pointera funkcijama
Default-ni metod za prosljeđivanje argumenta funkciji je po vrijednosti. Prosljeđivanje po vrijednosti (passing by value) znači da je funkciji prosljeđena kopija vrijednosti
argumenta.
Ovaj metod ima tri koraka:

1. Procjenjuje se izraz argumenta.
2. Rezultat je kopiran na stack, privremeni smještajni prostor u memoriji.
3. Funkcija vraća argumentovu vrijednost sa stack-a.

Kada je varijabla prosljeđena funkciji po vrijednosti, funkcija ima pristup vrijednosti varijabli, ali ne i oreginalnoj kopiji varijable. Kao rezultat, kood u funkciji ne može promijeniti (modifikovati) oreginalnu varijablu. Ovo je glavni razlog zašto je prosljeđivanje po vrijednosti default-ni metod prosljeđivanja argumenata: Podaci izvan funkcije su zaštićeni od nepažljive (inadvertent) modifikacije. Prosljeđivanje argumenata po vrijednosti je moguće sa osnovnim tipovima podataka (char, int, long, float, i double) i structurama.
Postoji još jedan način prosljeđivanja argumenta funkciji, ipak: prosljeđivajući pointer varijabli argumenta, radije nego vrijednost same varijable. Ovaj metod prosljeđivanja argumenta se naziva prosljeđivanje po referenci (passing by reference).
Kao što ste naučili Dana 9, (“Understanding Pointers”), prosljeđivanje po referenci je jedini način da prosljedite niz ka funkciji; prosljeđivanje niza po vrijednosti nije moguće.
Sa ostalim tipovima podataka, ipak vi možete koristiti bilo koji metod. Ako vaš program koristi velike strukture, njihovo prosljeđivanje po vrijednosti može prouzrokovati da
nestane prostora na stack-u. Pored ove opaske, prosljeđivanje argumenta po referenci, umjesto po vrijednosti, obezbjeđuje kako prednosti tako i nedostatke:

  • Prednost prosljeđivanja po referenci je da funkcija može modifikovati (mijenjati) vrijednost varijablu argumenta.
  • Nedostatak prosljeđivanja po referenci je da funkcija može modifikovati (mijenjati) vrijednost varijablu argumenta

No votes yet.
Please wait…

Prijavi se

Detalji dokumenta

Više u Informacione tehnologije

Više u Skripte

Komentari