Documente Academic
Documente Profesional
Documente Cultură
Definiții:
Variabilele declarate în afara oricărei funcții sunt variabile globale.
Variabilele declarate în interiorul unui bloc sunt variabile locale.
Porțiunea de cod în care o variabilă este accesibilă reprezintă scopul (domeniul de
vizibilitate) al variabilei respective.
Parametri formali ai unei funcții sunt variabile locale ale funcției respective.
Domeniul de vizibilitate al unei variabile locale este blocul în care variabila respectivă
este definită.
În situația în care numele unei variabile globale coincide cu numele variabilei locale,
varibila locală o “maschează” pe cea globală
04/30/2021 1
În cazul variabilelor locale, compilatorul alocă memorie în momentul excuției
blocului sau funcției în care acestea sunt definite. Când execuția funcției sau
blocului se termină, se eliberează memoria pentru aceasta și valorile pentru
variabilele locale se pierd.
Definiții:
Timpul de viață al unei variabile locale este durata de execuție a blocului(sau a
funcției) în care aceasta este definită.
Timpul de viață al unei variabile globale este durata de execuție a programului.
04/30/2021 2
Moduri de alocare a memoriei
Alocarea memoriei(interne) se poate realiza astfel:
- Alocare statică;
- Alocare dinamică;
- Alocare pe stivă.
04/30/2021 3
Așa după cum se cunoaște(sau ar trebui să cunoaștem), pentru toate tipurile de
date(simple sau structurate), la declararea acestora, compilatorul alocă automat
un număr de locații de memorie corespunzător tipului datei.
04/30/2021 4
Operatorii de alocare dinamică de memorie în C++
04/30/2021 5
Sintaxa:
<tipdata> reprezintă tipul datei (predefinit sau obiect) pentru care se alocă dinamic
memorie, iar < tipdata_pointer> este o variabilă pointer către tipul <tipdata>.
04/30/2021 6
Exemplu 1: se alocă dinamic memorie pentru o dată de tip întreg:
int *pint; // pointer către un un întreg
pint = new int;
//sau
int &i = *new int;
04/30/2021 7
Text preluat de pe adresa: http://alocaredinamica.eu5.org/index.html
Programul atestat0.cpp
04/30/2021 8
CONCLUZIE 1:
Pentru a putea testa valoarea pointerului, trebuie neaparat sa utilizăm nothrow!!!
CONCLUZIE 2:
să ștergem cu operatorul delete variabilele alocate dinamic.
04/30/2021 9
Funcții recursive
Definiție: o funcție se numește funcție recursivă(sau pe scurt recursivă) dacă ea
se autoapelează fie direct(în definiția ei se face apel la ea însăși), fie indirect (prin
apelul altor funcții)
Limbajele C și C++ dispun de mecanisme speciale care permit suspendarea
execuției unei funcții, salvarea datelor și reactivarea execuției la un alt moment
de timp. Pentru fiecaer apel al funcției, parametrii și variabilele se memorează în
stivă, având valori distincte la fiecare reapelare.
Programul factorial.cpp
04/30/2021 10
04/30/2021 11
Pointeri către funcții
Pointerii către funcții sunt variabile pointer care conțin adresa de început a codului
executabil al unei funcții. Pointerii către funcții permit:
-transferul ca parametru al adresei unei funcții;
- apelul unei funcții cu ajutorul unui pointer către acesta.
<tip> (*<nume_point>)(<lista_declar_param_formali>);
unde:
nume_point este un pointer de tipul “funcție cu rezultatul tipul_valorii_întoarse”. În
declarația precizată mai sus trebuie remarcat rolul parantezelor, penru a face distincție
între declarația unei funcții care întoarce un pointer și declarația unui pointer de funcție:
04/30/2021 12
Exemplu:
04/30/2021 13
Vă
mulțumesc!
04/30/2021 14