Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.

Capitolul 4.3. Despre argumentele functiilor

In jos

Capitolul 4.3. Despre argumentele functiilor Empty Capitolul 4.3. Despre argumentele functiilor

Mesaj  zooky 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.
zooky
zooky
Moderator
Moderator

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

https://e-learning.forumgratuit.ro

Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum