Extras din laborator
In C++ exista doua modalitati de lucra cu adrese de memomorie: pointeri si referinte.
Pointeri
Pointerii sunt variabile care contin adresa unei alte zone de memorie. Ei sunt utilizati pentru a date care sunt cunoscute prin adresa zonei de momorie unde sunt alocate.
Sintaxa utilizata pentru declararea lor este:
tip *variabila_pointer;
Exemplu:
// declaratie variabile
int i = 17, j = 3;
// declaratie pointer
int *p;
Continutul memoriei in urma acestor declaratii va fi:
?2145173214821472146pijVariabilaContinutAdresa
Se observa ca pointerul la acest moment nu este initializat. Referirea prin intermediul pointerului neinitializat va genera o eroare la rularea programului.
In lucrul cu pointeri se folosesc doi operatori unari:
- &: extragerea adresei unei variabile
- *: referirea continutului zonei de memorie indicate de pointer (indirectare)
Exemplu:
// p ia adresa lui i
p = &i;
// modificarea
// continutul zonei
// de memorie
// pointate de p
(*p) = 6;
Un pointer poate fi refolosit, in sensul ca poate contine adrese diferite la diferite momente de timp:
// modificare adresa
p = &j;
Operatiile permise asupra pointerilor sunt urmatoarele:
- extragerea obiectului referit de catre pointer folosind operatorul * sau operatorul [] (prezentat in sectiunea Masive)
- extragerea adresei unui pointer folosind operatorul & (se va obtine un pointer la pointer)
- atribuirea intre doi pointeri care refera acelasi tip de data
- incrementarea/decrementarea (va muta pointerul inainte/inapoi cu un numar de bytes egal cu dimensiunea tipului referit)
- adunarea/scaderea cu o valoare intreaga (va muta pointerul inainte/inapoi cu un numar de bytes egal cu dimensiunea tipului referit inmultita cu valoarea intreaga)
- diferenta a doi pointeri de acelasi tip (se obtine numarul de elemente de tipul respectiv ce incap intre cei doi pointeri)
- compararea a doi pointeri
- conversia pointerilor (se realizeaza ca si pentru celelalte tipui folosind operatorul de cast)
Referinte
Referintele, ca si pointerii, sunt variabile care contin adresa unei zone de memorie. Semantic, ele reprezinta aliasuri ale unor variabile existente.
Referintele sunt legate de variabile la declaratie si nu pot fi modificate pentru a referi alte zone de memorie. Sintaxa folosita pentru declararea unei referinte este:
Tip & referinta = valoare;
Exemplu:
// declaratii variabile
int i = 6, j = 3;
// declaratie referinta
int& r = j;
Sintaxa utilizata pentru manipularea pointerului este aceeasi cea a variabilei ce care este legata (indirectarea este realizata automat de catre compilator). Toate modificarile aplicate referintei se vor reflecta asupra variabilei referite.
Preview document
Conținut arhivă zip
- Referinte si Pointeri.pdf