sabato 4 ottobre 2014

I Puntatori

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