SlideShare a Scribd company logo
I puntatori
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
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
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).
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; 
...

More Related Content

What's hot

Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
Vincenzo De Maio
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedefPiero Fraternali
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
Sergio Ronchi
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e Riferimenti
Ilio Catallo
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2Majong DevJfu
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...UltraUploader
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
Manuel Scapolan
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
Giovanni Buffa
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterativeguest60e9511
 
ADT Stack
ADT StackADT Stack
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Corso c++
Corso c++Corso c++
Corso c++
Antonio Furone
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 

What's hot (19)

Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e Riferimenti
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
06 2 vector_matrici
06 2 vector_matrici06 2 vector_matrici
06 2 vector_matrici
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterative
 
8 Algoritmi
8   Algoritmi8   Algoritmi
8 Algoritmi
 
ADT Stack
ADT StackADT Stack
ADT Stack
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Corso c++
Corso c++Corso c++
Corso c++
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
06 3 struct
06 3 struct06 3 struct
06 3 struct
 

Similar to Puntatori in C++

Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matriciguest60e9511
 
Scambio di variabili con puntatori
Scambio di variabili con puntatoriScambio di variabili con puntatori
Scambio di variabili con puntatori
Riccardo Monterisi
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
Marcello Missiroli
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLextrategy
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
Davide Carboni
 

Similar to Puntatori in C++ (10)

Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
3 Linguaggioc
3   Linguaggioc3   Linguaggioc
3 Linguaggioc
 
Scambio di variabili con puntatori
Scambio di variabili con puntatoriScambio di variabili con puntatori
Scambio di variabili con puntatori
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQL
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 

Puntatori in C++

  • 2. 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
  • 3. 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
  • 4. 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).
  • 5. 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; ...