| |
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.
|
|