Capitolul 4.3. Despre argumentele functiilor

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 4.3. Despre argumentele functiilor

Mesaj  zooky la data de Mier Mar 18, 2009 12:18 pm

In Capitolul 1 am discutat faptul ca argumentele functiilor sint trimise prin valoarea, adica functia apelata primeste o copie temporara si privata a fiecarui argument si nu adresele lor. Aceasta inseamna ca functia nu poate afecta argumentul original din functia apelanta. Intr-o functie argument este de fapt o variabila locala initializata cu valoarea cu care functia a fost apelata.
Cind un nume de tablou apare ca argument al unei functii locatia de inceput a tabloului este cea trimisa; elementele nu sint copiate. Functia poate altera elementele tabloului indexind cu aceasta valoare. Efectul este ca tablourile sint trimise prin referinta. In capitolul 5 vom discuta folosirea pointerilor pentru a permite functiilor sa nu altereze tablourile din functiile apelante. Fiindca veni vorba, nu este un mod intrutotul satisfacator acela de a scrie o functie portabila care acepta un numar variabil de argumente, deoarece nu exista nici o modalitate portabila pentru functia apelata sa determine cite argumente i-au fost trimise actual intr-un apel dat. Astfel, nu puteti scrie o functie portabila intr-adevar de argumente, asa cum sint functiile MAX scrise in FORTRAN sau PL/1.
Este in general sigur sa ne ocupam cu un numar variabil de argumente daca functia apelata nu foloseste un argument care nu a fost furnizat efectiv si daca tipurile sint consistente.
printf, cea mai comuna functie in C cu un numar variabil de argumente, foloseste informatia din primul sau argument pentru a determina cite alte elemente sint prezente si care sint tipurile lor. Ea esueaza urit daca apelantul nu furnizeaza suficiente argumente sau daca tipurile nu sint cele specificate de primul argument. Ea este deasemenea neportabila si trebuie modificata pentru diferite calculatoare.
Reciproc, daca argumentele sint de tip cunoscut, este posibil sa marcam sfirsitul listei de argumente intr-un mod corespunzator. De exemplu cu valoare de argument speciala (adresa0) care specifica sfirsitul listei de argumente.
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum