Archivio
Opzioni


Ricerca














C++


I Puntatori



I puntatori sono delle variabili che contentengono gli indirizzi di memoria di altre variabili. Un puntatore viene dichiarato nel modo seguente:
int *punt;
Per fare in modo che il puntatore contenga l'indirizzo di un'altra variabile dobbiamo utilizzare la seguente forma:
	int intero; 
	int punt=&intero;
Dove il carattere & sta ad indicare "l'indirizzo di...". Ogni puntatore, nella sua dichiarazione, deve essere preceduto da un tipo di dato, che non indica il dato del puntatore stesso, ma il tipo della variabile puntata. I puntatori possono puntare a qualsiasi variabile e struttura dati. In caso di strutture complesse (array, struct, ecc.) il puntatore punterà al primo elemento della struttura. Ad esempio per una struct avremo:
	struct struttura
	{
   		int numero;
   		char carattere;
	};

	struttura str;		
	struttura *punt;	

	punt=&str;		

	cout<<"Inserire il numero intero";
	cin>>punt->numero;	

	cout<<"Inserire il carattere";
	cin>>punt->carattere;
Dove il simbolo -> indica che il puntatore punta al campo indicato della struct puntata.
Per gli array e le matrici la dichiarazione è sempre la stessa, ma la definizione ( o assegnazione degli indirizzi) è diversa,così come lo scorrimento dell'array, come nell'esempio:
int array[20];
float matrice[4][4];

int *punt_array;
float *punt_matrice;

punt_array = array;	
punt_matrice = matrice; 

for(int i=0;i<20;i++)
{
  cout<< punt_array[i];	 //oppure: cout<< *(punt_array+i);	
}


for(i=0;i<4;i++)
{
  for(j=0;j<4;j++)
   {
     
     cout<< *(punt_matrice+i+j);	
   }
}
I puntatori sono utilizzati anche per gestire l'allocazione dinamica, che crea una variabile temporanea nell'HEAP (parte della RAM) che deve essere però deallocata al termine del programma. Ecco un esempio di allocazione dinamica:
int *p;
p= new int;   //si crea lo spazio per un nuovo intero

//qui p viene trattato come un normale puntatore ad un intero

//deallocazione di p (p non punta più allo spazio nell'heap)
delete p;


<< Le Struct INDICE TEORIA C++