CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
: | |
Pointerii nu sint de tip int
S-a putut observa ca programele C mai vechi au o atitudine mai
toleranta fata de copierea pointerilor. In general a fost adevarat
ca pe majoritatea masinilor un pointer poate fi asignat unui
intreg si invers, fara a-l schimba; nu are loc nici o scalare
sau conversie si nu se pierd biti. In mod regretabil aceasta
stare de lucruri a condus la asumarea unor libertati nepermise
desi partea programatorului in lucru cu rutina ce returneaza
pointeri ce sint transmisi apoi pur si simplu altor rutine -
necesitatea declararii pointerului fiind adesea omisa. De exemplu,
sa luam o functie strsave care copiaza sirul s undeva, intr-o
zona obtinuta printr-un apel la alloc, returnind apoi un pointer
pe ea. Strsave se poate scrie astfel
char *strsave(s) /* salveaza undeva sirul s */
char *s;
In practica, exista o tendinta puternica de a omite declararile:
strsave(s * salveaza undeva sirul s */
Acest cod s-ar putea sa mearga pe multe masini deoarece tipul
implicit al functiilor si al argumentelor este int iar atit int-ul
cit si pointerul pot fi asignati la inceput cit si la sfirsit. Cu
toate acestea, acest gen de cod este inerent riscant deoarece el
depinde de detalii de implementare si de arhitectura masinii, care
nu pot fi rezolvate pentru compilatorul particular utilizat de
dvs. Este recomandabil sa se efectueze toate declararile necesare.
(Programul lint va avertiza in legatura cu astfel de restrictii
in cazul in care se vor strecura inadvertente).
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1080
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved