Documente Academic
Documente Profesional
Documente Cultură
Fiecarui program i se aloca trei zone distincte in memoria interna: segment de date; segment de stiva heap. Def. Prin pointer intelegem adresa unei variabile , iar printr-o variabila de tip pointer vom intelege o variabila care poate retine adresele altor variabile. Prin alocare dinamica a memoriei vom intelege alocarea unor variabile in Heap, alocare care se face in timpul executarii programului si nu de la inceput. Alocarea dinamica foloseste pointeri si variabile de tip pointer. Avantajele alocarii dinamice: utilizarea memoriei cat are nevoie in orland !"" memoria din segmentul de date nu este intotdeauna suficienta , e limitata la #$ %, dar apeland la Heap, creste memoria disponibila.
Operatori
-. Adresa unei variabile se obtine cu a)utorul operatorului de referinta /01 care trebuie sa preceada numele variabilei: &nume_variabila; exemplu: adr-20numar; -variabilei adr- i se atribuie adresa variabilei numar
3. Pentru a obtine continutul variabilei a carei adresa este memorata , se utilizeaza operatorul unar /,1, numit si operator de dereferentiere, are prioritate 3. Exemplu: 55variabila a este initializata cu valoarea 4, iar variabila adr este ini55 tializata cu adresa lui a, se afiseaza continutul variabilei a74., 55 pornind de la adresa ei, retinuta de adr. 8. (peratorul /.1 9numit operator de selectie, are prioritate -7maxima.. $. (peratorul de selectie directa /-:1- acceseaza un camp al unei structuri pornind de la un pointer catre acea structura. ;xemplu: 7,adra..nume <au +a tiparire: cout66adra-:nume661 /166adra-:prenume; $. =ntre variabilele de tip pointer sunt premise atribuiri doar in cazul in care au acelasi tip de pointer Exemplu: int , adr-,,adr3; float ,adr8; >55 initializari atribuirea: / adr-2adr31 corecta atribuirea: / adr82adr31 nu este corecta !um putem atribui cotinutul unei variabile de tip pointer catre tipul x, altei variabile de tip pointer catre tipul ?@ Raspuns: se utilizeaza operatorul de conversie explicita: adr827float,. adr31 este corect. int a24, ,adr20a; cout66,adr;