Dichiarazione di un array in C++

17 marzo 2006

La sintassi per dichiarare un array è simile a quella di ogni altra dichiarazione in C++: si deve indicare il tipo, seguito da un nome valido e da una coppia di parentesi quadre che racchiudono un’espressione costante. Tale espressione costante definisce le dimensioni dell’array. Ad esempio:

int array_uno[10];	// Un array di 10 interi
char array_due[20];	// Un array di 20 caratteri
Utilizziamo le parentesi quadre per indicare la dimensione dell’array, ma al loro interno non possiamo utilizzare, almeno in fase di dichiarazione, nomi di variabili.

In altre parole il numero di elementi di un array definito in questo modo, deve essere fissato dal principio. Per dimensionare dinamicamente un array occorre servirci di altre funzionalità come l’operatore new per l’allocazione dinamica della memoria.

In ogni caso sarà possibile specificare le dimensioni di un array anche utilizzando costanti definite, come ad esempio:

#define ARRAY_UNO_MAX 10
#define ARRAY_DUE_MAX 20

int array_uno[ARRAY_UNO_MAX];
char array_due[ARRAY_DUE_MAX];

L’utilizzo 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 dell’array 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:

int array_tre[10];

...	// L'array viene inizializzato

for(int i=0; i < 14; i++)
{
	cout << array_tre[i] << endl;
}

il risultato sarà corretto fino a quando la variabile i sarà minore o uguale a 9 (infatti la dimensione dell’array è stata definita essere uguale a 10). Ciò 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] non è prevedibile poiché il programma leggerà aree di memoria che non sono state inizializzate o, addirittura, che contengono dei valori relativi ad altre variabili, stampando quindi sullo schermo risultati inaspettati.

Utilizzando una costante per definire la dimensione dell’array il rischio di questo errore si può evitare:

#define ARRAY_trE_MAX 10

int array_tre[ARRAY_trE_MAX];

...	// L'array viene inizializzato

int i;
for (i=0; i < ARRAY_trE_MAX; i++)
{
	cout << array_tre[i] << endl;
}

In questo modo non dobbiamo ricordare la dimensione dell’array array_tre poichè la costante ARRAY_trE_MAX lo farà al posto nostro, evitando i cosìdetti errori di “array out of bounds“.

Tutte le lezioni

1 ... 56 57 58 ... 66

Se vuoi aggiornamenti su Dichiarazione di un array in C++ inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Dichiarazione di un array in C++

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy