Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

E' meglio un cane amico che un amico cane.

Anonimo 

Sondaggio:

Quale auto per non passare inosservati?

Jaguar
Mercedes
Ferrari
Maserati
Bmw
AlfaRomeo
Bugatti

visualizza risultati


 

Array

Per quanto visto precedentemente, una variabile puo` contenere un solo valore alla volta; il costruttore di array [ ] permette di raccogliere sotto un solo nome piu` variabili dello stesso tipo. La dichiarazione

 

int Array[10];

 

introduce con il nome Array 10 variabili di tipo int (anche se solitamente si parla di una variabile di tipo array); il tipo di Array e` array di 10 int(eri).
La sintassi per la generica dichiarazione di un array e`

< NomeTipo > < Identificatore > [ < NumeroElementi > ] ;

Al solito Tipo puo` essere sia un tipo primitivo che uno definito dal programmatore, Identificatore e` un nome scelto dal programmatore per identificare l'array, mentre NumeroElementi deve essere un intero positivo e indica il numero di singole variabili che compongono l'array.
Il generico elemento dell'array viene selezionato con la notazione Identificatore[Espressione], dove Espressione puo` essere una qualsiasi espressione che produca un valore intero; il primo elemento di un array e` sempre Identificatore[0], e di conseguenza l'ultimo e` Identificatore[NumeroElementi-1]:

 

float Pippo[10];
float Pluto;

Pippo[0] = 13.5;   // Assegna 13.5 al primo elemento
Pluto = Pippo[9];  // Seleziona l'ultimo elemento di
                   // Pippo e lo assegna a Pluto

 

E` anche possibile dichiarare array multidimensionali (detti array di array o piu` in generale matrici) specificando piu` indici:

 

long double Qui[3][4];       // una matrice 3 x 4
short Quo[2][10];            // 2 array di 10 short int
int SuperPippo[12][16][20];  // matrice 12 x 16 x 20

 

La selezione di un elemento da un array multidimensionale avviene specificando un valore per ciascuno degli indici:

 

int Pluto = SuperPippo[5][7][9];
Quo[1][7] = Superpippo[2][2][6];

 

E` anche possibile specificare i valori iniziali dei singoli elementi dell'array tramite una inizializzazione aggregata:

 

int Pippo[5] = { 10, -5, 6, 110, -96 };
short Pluto[2][4] = { {4, 7, 1, 4}, {0, 3, 5, 9} };

int Quo[4][3][2] = { {{1, 2}, {3, 4}, {5, 6}},
                     {{7, 8}, {9, 10}, {11, 12}},
                     {{13, 14}, {15, 16}, {17, 18}},
                     {{19, 20}, {21, 22}, {23, 24}}
                   };

float Minni[ ] = { 1.1, 3.5, 10.5 };
long Manetta[ ][3] = { {5, -7, 2}, {1, 0, 5} };

 

La prima dichiarazione e` piuttosto semplice, dichiara un array di 5 elementi e per ciascuno di essi indica il valore iniziale a partire dall'elemento 0. Nella seconda riga viene dichiarata una matrice bidimensionale e se ne esegue l'inizializzazione, si noti l'uso delle parentesi graffe per raggruppare opportunamente i valori; la terza dichiarazione chiarisce meglio come procedere nel raggruppamento dei valori, si tenga conto che a variare per primo e` l'ultimo indice cosi` che gli elementi vengono inizializzati nell'ordine Quo[0][0][0], Quo[0][0][1], Quo[0][1][0], ..., Quo[3][2][1].
Le ultime due dichiarazioni sono piu` complesse in quanto non vengono specificati tutti gli indici degli array: in caso di inizializzazione aggregata il compilatore e` in grado di determinare il numero di elementi relativi al primo indice in base al valore specificato per gli altri indici e al numero di valori forniti per l'inizializzazione, cosi` che la terza dichiararzione introduce un array di 3 elementi e l'ultima una matrice 2 x 3. E` possibile omettere solo il primo indice e solo in caso di inizializzazione aggregata.
Gli array consentono la memorizzazione di stringhe:

 

char Topolino[ ] = "investigatore" ;

 

La dimensione dell'array e` pari a quella della stringa "investigatore" + 1, l'elemento in piu` e` dovuto al fatto che in C++ le stringhe per default sono tutte terminate dal carattere nullo ('\0')che il compilatore aggiunge automaticamente.
L'accesso agli elementi di Topolino avviene ancora tramite le regole viste sopra e non e` possibile eseguire un assegnamento con la stessa metodologia dell'inizializzazione:

 

char Topolino[ ] = "investigatore" ;

Topolino[4] = 't';       // assegna 't' al quinto
                         // elemento
Topolino[ ] = "basso";   // errore!
Topolino = "basso";      // ancora errore!

 

E` possibile inizializzare un array di caratteri anche nei seguenti modi:

 

char Minnie[ ] = { 'M', 'i', 'n', 'n', 'i', 'e' };
char Pluto[5] = { 'P', 'l', 'u', 't', 'o' };

 

In questi casi pero` non si ottiene una stringa terminata da '\0', ma semplici array di caratteri il cui numero di elementi e` esattamente quello specificato.

 

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2009 Cataldo Sasso