Puntatori in C++

5
I puntatori

Transcript of Puntatori in C++

Page 1: Puntatori in C++

I puntatori

Page 2: Puntatori in C++

Cosa sono i puntatori?

I puntatori sono delle variabili che contengono un indirizzo di un'altra variabile (detta variabile puntata).

Si dichiarano in questo modo :

int * p; // p é una variabile puntatore di tipo intero

Normalmente per qualsiasi variabile, purché non sia un puntatore, il suo indirizzo viene generato casualmente durante l'esecuzione del programma. Quindi non é possibile assegnare un indirizzo ad un puntatore tranne che per due casi :

Assegno l'indirizzo del puntatore a NULL

int * a = NULL ; a = new int ; // a é una variabile puntatore di tipo intero che ha come indirizzo NULL

// l'operatore new alloca spazio in memoria

Assegno l'indirizzo del puntatore ad una variabile

int * a ; int ind ; a = & ind

// in questo caso a é sempre una variabile puntatore e assegnerò con l'operatore & l'indirizzo della variabile chiamata ind

Page 3: Puntatori in C++

Funzioni che restituiscono un puntatore e Puntatori a funzione Una funzione può restituire un puntatore.

Esempio : int * funz(); // dichiaro una funzione che restituirà un // puntatore a int

Puntatori a funzione

In C ++ Esistono i puntatori a funzione. Servono nel caso un programma dovesse aver la necessità di scegliere tra più funzioni. Quindi, in questo caso gli indirizzi delle funzioni da chiamare non vengono risolti al momento della compilazione.

int * (* punt_funz) (char * ); // dichiaro un puntatore a funzione punt_funz che restituirà un puntatore a int e ha un argomento, che é un puntatore a char

Page 4: Puntatori in C++

Array Statici

Gli array (o vettore) è un'insieme di variabili che occupano spazi consecutivi in memoria e appartengono tutti allo stesso tipo.

viene dichiarato in questo modo : int vett[5]; // dichiaro un array di nome

// vett e di dimensione 5

Il vettore sono dei puntatori con delle caratteristiche in più:

Quando dichiaro un array:

Alloco spazio in memoria sia per il puntatore di nome vett

Alloco spazio in memoria per l'area puntata di ci viene specificata la lunghezza.

L'indirizzo dell'array viene inizializzato con l'indirizzo dell'area puntata (il primo elemento dell'array).

Page 5: Puntatori in C++

Array Dinamici

Un array dinamico è un vettore la cui dimensione può essere stabilita run-time, cioè in fase di esecuzione del programma. Un esempio di un vettore dinamico in C++ è il seguente:

double *x; //questa istruzione dichiara x come puntatore a double

cout<<"Di quanti elementi hai bisogno? ";cin>>dim;

x = new double[dim];

x[0]=10;x[1]=12;...