Sei sulla pagina 1di 2

dichiarazione di un array

17 marzo 2006

Marco Altese

Per dichiarare un array, come per ogni altra dichiarazione in C++, si deve scrivere il tipo, seguito da un nome valido e da una coppia di parentesi quadre che racchiudono unespressione costante. Tale espressione costante definisce le dimensioni dellarray. Ad esempio:
i n ta r r a y _ u n o [ 1 0 ] ;/ /U na r r a yd i1 0i n t e r i c h a ra r r a y _ d u e [ 2 0 ] ;/ /U na r r a yd i2 0c a r a t t e r i

Si noti che allinterno delle parentesi quadre non possibile, in fase di dichiarazione dellarray, utilizzare nomi di variabili . E possibile, per specificare le dimensioni di un array, usare delle costanti definite, come ad esempio:
# d e f i n eA R R A Y _ U N O _ M A X1 0 # d e f i n eA R R A Y _ D U E _ M A X2 0 i n ta r r a y _ u n o [ A R R A Y _ U N O _ M A X ] ; c h a ra r r a y _ d u e [ A R R A Y _ D U E _ M A X ] ;

Lutilizzo di costanti per definire le dimensioni di un array una pratica altamente consigliata. Infatti, uno degli errori che spesso accadono nella manipolazione degli elementi di un array quello di far riferimento ad elementi che vanno oltre il limite della dimensione dellarray precedentemente definita. Il C++ (e lo stesso C), come magari si sarebbe portati a pensare, non effettua nessun controllo sugli indici che si utilizzano quando si eseguono operazioni sugli array. Per cui, ad esempio, se eseguiamo il seguente codice:
i n ta r r a y _ t r e [ 1 0 ] ; / /L a r r a yv i e n ei n i z i a l i z z a t o i n ti ; f o r ( i = 0 ;i<1 4 ;i + + ) { c o u t< <a r r a y _ t r e [ i ]< <e n d l ; }

il risultato sar corretto fino a quando la variabile i sar minore o uguale a 9 (infatti la dimensione dellarray stata definita essere uguale a 10). Quello che avverr, quando il programma cercher di andare a leggere i valori array_tre[10], array_tre[11], array_tre[12] e array_tre[13] assolutamente casuale. Infatti, il programma andr a leggere delle aree di memoria che non sono state inizializzate o, addirittura, che contengono dei valori relativi ad altre variabili, stampando quindi sullo schermo risultati inaspettati. Se si fosse usata una costante per definire la dimensione dellarray questo errore sarebbe stato facilmente evitato. Infatti:
# d e f i n eA R R A Y _ t r E _ M A X1 0 i n ta r r a y _ t r e [ A R R A Y _ t r E _ M A X ] ; / /L a r r a yv i e n ei n i z i a l i z z a t o i n ti ; f o r( i = 0 ;i<A R R A Y _ t r E _ M A X ;i + + ) { c o u t< <a r r a y _ t r e [ i ]< <e n d l ; }

Come si pu notare facilmente in questo modo il programmatore non deve preoccuparsi di ricordarsi la dimensione dellarray array_tre poich la costante ARRAY_trE_MAX viene utilizzata proprio per tale scopo, evitando i cosdetti errori di array out of bounds.

Lezione:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3 6 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

Potrebbero piacerti anche