I Puntatori:
02/10/2014
Cosa sono i ‘Puntatori’?
I Puntatori sono delle variabili, quindi parlando di
puntatori parleremo di un nuovo tipo di variabile; da un punto di vista pratico sono delle
variabili particolari perché al contrario dei tipi di variabili visti fino ad
ora non contengono un dato ma un indirizzo di memoria di un'altra variabile.
Possiamo avere puntatori a qualsiasi tipo di variabile:
Tipo variabile: Tipo
variabile Puntatore:
int a; int
*a;
float b; float
*b;
char c; char
*c;
double d; double *d;
La dichiarazione di una variabile puntatore deve includere il
tipo della variabile a cui il puntatore punta.
Con i puntatori abbiamo due nuove istruzioni da utilizzare: ‘&’
e ‘*’
L' operatore & fornisce l'indirizzo di una variabile:
a=b; //non posso
assegnare ad “a” il contenuto di “b” perché “a” è una variabile di tipo
puntatore
mentre “b” è una variabile di tipo intero
a=&b; //assegna
al puntatore a l’indirizzo di b
L' operatore * da' il contenuto dell'oggetto a cui punta un
puntatore.
a=&b;
Cout<<” “ <<*a<<endl; //visualizzerà il dato contenuto all’indirizzo
a cui punta la variabile
a;
Vediamo un esempio pratico:
#include <iostream>
using namespace std;
int main()
{
int *a; //dichiarazione
della variabile puntatore "a"
int b; //dichiarazione
della variabile intera "b"
b=7; //assegno alla
variabile b il valore 7
a=&b; //assegno alla
variabile puntatore "a" l'indirizzo della variabile intera
"b"
cout<<endl<<"Il contenuto della variabile di tipo
puntatore 'a' e': "<<a<<endl<<"Il dato a cui punta
la variabile di tipo puntatore 'a' e': " <<*a<<endl;
//visualizzo in output il contenuto
della variabile puntatore "a" (che sarà un indirizzo) e il dato
contenuto all'indirizzo a cui punta la variabile puntatore "a" (che
sarà il valore 7 assegnato alla variabile “b”)
cout<<endl<<endl<<"Il contenuto della variabile
di tipo intero 'b' e': "<<b<<endl<<"L'indirizzo
della variabile di tipo intero 'b' e': " <<&b<<endl;
//visualizzo in output il contenuto
della variabile intera "b" (che sarà il valore assegnato 7) e il suo
indirizzo in memoria (che nel nostro esempio sarà lo stesso contenuto nella
variabile puntatore “a”)
return 0;
}
*!* Per la macchina una variabile è il suo indirizzo in
memoria
*!* I tipi delle variabili rappresentano una proprietà, una
delle proprietà che rappresentano è quanto spazio occupano in memoria/quanto ne
viene allocato
*!* Il puntatore contiene un indirizzo di memoria, lo spazio
dipende dal tipo di architettura.
4bit = 16 indirizzi (2^4)
1 byte = 1 indirizzo
1KB di RAM = 1024 byte = 1024 indirizzi
1KB = 2^10
Fonti:
Prof. Alemanno
http://www.science.unitn.it/~fiorella/guidac/guidac025.html
Nessun commento:
Posta un commento