Concetti Chiave
- Un array è dichiarato usando le parentesi quadre e la sua dichiarazione alloca spazio in memoria.
- Gli elementi di un array sono indicizzati a partire da 0 fino a N-1, e non inizializzati hanno valore indefinito.
- Per accedere a un elemento si usa l'indice; un indice fuori range causa buffer overflow.
- Un array può essere inizializzato con valori nella dichiarazione; quelli non inizializzati valgono 0.
- Gli array possono essere multidimensionali, memorizzati sequenzialmente, e richiedono più indici per l'accesso.
Tipo di dato array
La dichiarazione di un array è:
L’espressione deve essere intera e positiva. La dimensione non può essere espressa da un const int ed è preferibile esprimere la lunghezza tramite una macro (se un numero compare più volte, questo è chiamato magic number, cattivo stile di programmazione).
La dichiarazione di un array è già una definizione, poichè alloca spazio in memoria. Gli elementi di un array sono disposti in memoria in locazioni successive, ogni elemento è indicizzato da un numero, si inizia da 0 e il massimo è N-1. Se il loro contenuto non è inizializzato, il loro valore non è definito.
Per accedere ad un valore è necessario specificare l’indice. Se viene indicato un valore indice esterno a 0 e N-1, si verificherà buffer overflow.
Per inizializzare un array si usa:
Un array può essere definito con più di una dimensione, quindi array multidimensionali.
Anche gli array multidimensionali vengono salvati in memoria sequenzialmente, la prima riga e seguita dalla seconda e così via. Per inizializzare un array multidimensionale, si opera: ={{a,b,c}, {d,e,f}}.
Se le parentesi interne vengono omesse gli elementi sono inizializzati in ordine di come sono scritti, ma è meglio evitare. Per stampare i valori di un array multidimensionale è necessario utilizzare più indici diversi e più livelli di annidamento.
È possibile omettere solo la prima dimensione se l’array viene subito inizializzato.
Domande da interrogazione
- Come si dichiara e inizializza un array in modo corretto?
- Cosa succede se si accede a un indice fuori dai limiti di un array?
- È possibile definire array multidimensionali e come vengono gestiti in memoria?
Un array si dichiara con le parentesi quadre "[]", e si inizializza con "= {n0, n1, n2,…}". È importante specificare i valori all'interno delle parentesi graffe, poiché i valori non inizializzati valgono automaticamente 0. Non si può inizializzare un array senza specificare alcun valore.
Se si accede a un indice esterno ai limiti 0 e N-1 di un array, si verifica un buffer overflow, che può causare comportamenti imprevisti o errori nel programma.
Sì, è possibile definire array multidimensionali, che vengono salvati in memoria sequenzialmente, riga per riga. Per inizializzarli, si utilizza la sintassi ={{a,b,c}, {d,e,f}}. È importante utilizzare più indici e livelli di annidamento per accedere correttamente ai loro valori.