domenica 23 novembre 2014

Puntatori a un Oggetto

Un puntatore può puntare a un Area di Memoria di tipo "Oggetto", vediamo un esempio di codice:

Class Punto 
{
      ...
      ...
      ...
}

Punto* q;   //dichiarazione di un puntatore "q" di tipo "Punto"
q=new Punto;   //alloco spazio di memoria adatto a tipo "Punto" e restituisco a "q" l'indirizzo di                                       memoria

Per accedere alle proprietà o ai metodi della Classe Punto tramite puntatore posso utilizzare due strumenti:
q -> ascissa=5;   //operatore freccia
(*q).ordinata=7;   //* è l'area di memoria puntata

Quando è necessario dichiarare un Array di puntatori invece utilizziamo la seguente sintassi:
q=new Punto[10];   //alloca 10 strutture, preleva il primo indirizzo dell'area puntata e lo assegna a                                         q[0] - "q" punta ad un area contigua.
for(int i=0;i<10;i++)
{
   q[i].ascissa=5+i;
   q[i].ordinata=7+i;
}

in alternativa:

for(int i=0;i<10;i++)
{
   *(q+i)=i;   //dove "q" è l'indirizzo di partenza e "i" l'elemento 
}

Per deallocare lo spazio assegnata ai puntatori utilizzeremo lo strumento "delete":
per un puntatore: delete q;
per un array di puntatori delete [10]Punto;

*!* Gli indirizzi puntati dagli Array sono salvati in un area di memoria chiamata +HEAP

Nessun commento:

Posta un commento