//============================================================================ // // esempio di uso di array e puntatori // //============================================================================ #include using namespace std; int main(){ // definisco un array int array[5]={1,2,3,4,5} ; // definisco un puntatore int *nump ; // uguaglio un puntatore ad un array: e' un'operazione lecita. L'array viene // infatti considerato come il puntatore al suo primo elemento nump = array; // verifichiamo che e' vero cout << "Il puntatore vale ---->>> " << nump << endl; cout << "Il valore puntato ---->>> " << *nump << endl; cout << "=========================================" << endl; // Nel puntatore viene memorizzata la locazione di memoria del primo elemento // dell'array mentre il valore puntato e' proprio il primo elemento dell'array // Ora facciamo un loop per accedere a tutti gli elementi for (int k = 0 ; k < 5 ; k++){ // questo e' il modo standard cout << "L'elemento " << k << " vale --->> " << array[k] << endl; cout << "L'indirizzo dell'elemento " << k << " vale --->> " << nump << endl; // qui invece usiamo il puntatore cout << "L'elemento puntato da nump vale --->> " << *nump << endl; cout << "=========================================" << endl; // Importante: possiamo incrementare un puntatore: significa che ora dentro // il puntatore viene storato l'indirizzo dell'elemento successivo. nump++; } // ora rimetto il puntatore sul terzo elemento .... nump-=3; cout << "L'indirizzo vale --->> " << nump << endl; cout << "Il valore puntato --->> " << *nump << endl; // .... e vado a modificarlo *nump = 9999; // qui rimetto il puntatore al primo elemento dell'array nump = array; // andiamo a verificare che il terzo elemento dell'array e' stato modificato // mentre le locazioni di memoria sono le stesse. for (int k = 0 ; k < 5 ; k++){ cout << "L'elemento " << k << " vale --->> " << array[k] << endl; cout << "L'indirizzo dell'elemento " << k << " vale --->> " << nump << endl; cout << "L'elemento puntato da nump vale --->> " << *nump << endl; cout << "=========================================" << endl; nump++; } }