PC Laborator 12: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 21: Linia 21:
</syntaxhighlight>
</syntaxhighlight>


Variabila de tip pointer <code>pa</code> nu memorează un întreg, ci o adresă în memorie, iar de la adresa respectivă se poate citi un întreg. Acest lucru se numește indirectare simplă.
Variabila de tip pointer <code>pa</code> nu memorează un întreg, ci o adresă în memorie, iar de la adresa respectivă se poate citi un întreg. Acest lucru se numește indirectare simplă. În plus, deoarece tipul pointer este în sine un tip de dată, și în definiția unui pointer, <tip_data> poate fi un pointer, iar asta permite următoarele construcții:
* <code>int * pa;</code> - variabilă ce stochează o adresă de unde se poate citi un întreg (indirectare simplă);
* <code>int * pa;</code> - variabilă ce stochează o adresă de unde se poate citi un întreg (indirectare simplă);
* <code>int ** pa;</code> - variabilă ce stochează o adresă de unde se poate citi o adresă de unde se poate citi un întreg (dublă indirectare);
* <code>int *** pa;</code> - variabilă ce stochează o adresă de unde se poate citi o adresă de unde se poate citi o adresă de unde se poate citi un întreg (triplă indirectare);
* etc.

Versiunea de la data 30 decembrie 2015 13:29

Obiective

La sfârșitul acestui laborator studenții vor fi capabili:

  • să definească și să utilizeze tipuri de date pointer;
  • să folosească pointeri pentru a putea modifica variabilele trimise ca argumente unor funcții;
  • să aloce, să folosească și să elibereze memorie HEAP, în mod dinamic;
  • să utilizeze valgrind pentru a diagnostica pierderile de memorie.

Tipuri de date pointer

Un pointer reprezintă o variabilă care stochează o adresă în memoria dedicată aplicației. Tipul variabilei de tip pointer specifică tipul datei care poate fi citit de la adresa respectivă.

O variabilă de tip pointer se definește în felul următor:

<tip_data> * <nume_variabila>;

Spre exemplu:

int * pa;

Variabila de tip pointer pa nu memorează un întreg, ci o adresă în memorie, iar de la adresa respectivă se poate citi un întreg. Acest lucru se numește indirectare simplă. În plus, deoarece tipul pointer este în sine un tip de dată, și în definiția unui pointer, <tip_data> poate fi un pointer, iar asta permite următoarele construcții:

  • int * pa; - variabilă ce stochează o adresă de unde se poate citi un întreg (indirectare simplă);
  • int * pa; - variabilă ce stochează o adresă de unde se poate citi un întreg (indirectare simplă);
  • int ** pa; - variabilă ce stochează o adresă de unde se poate citi o adresă de unde se poate citi un întreg (dublă indirectare);
  • int *** pa; - variabilă ce stochează o adresă de unde se poate citi o adresă de unde se poate citi o adresă de unde se poate citi un întreg (triplă indirectare);
  • etc.