Array

 


 

Cos'è un array ?

 

Un array é un insieme di variabili che occupano locazioni consecutive in memoria e sono caratterizzate dall'appartenere tutte allo stesso tipo, detto tipo dell'array (può anche essere un tipo astratto).

Ogni variabile di tale insieme é detta elemento dell'array ed é identificata dalla sua posizione d'ordine nell'array (indice). L'intero array é identificato da un nome (che va specificato secondo le regole generali di specifica degli identificatori).

Il numero di elementi di un array (detto dimensione dell'array ) é predefinito e invariabile. In C++ (come in C) l'indice può assumere valori compresi fra zero e il numero di elementi meno 1.

 


 

Definizione e inizializzazione di un array

 

Per definire un array bisogna specificare prima il tipo e poi il nome dell'array, seguito dalla sua dimensione fra parentesi quadre (la dimensione deve essere espressa da una costante).
Es.                              int valori[30];

In fase di definizione un array può essere anche inizializzato. I valori iniziali dei suoi elementi devono essere specificati fra parentesi graffe e separati l'un l'altro da una virgola; inoltre la dimensione dell'array, essendo determinata automaticamente, può essere omessa (non però le parentesi quadre, che costituiscono l'operatore di dichiarazione dell'array).
Es.                               int valori[] = {32, 53, 28, 85, 21};
nel caso dell'esempio la dimensione 5 é automaticamente calcolata.

 


 

L'operatore [ ]

 

L'operatore binario [ ] richiede come left-operand il nome di un array e come secondo operando (racchiuso fra le due parentesi quadre) una qualunque espressione con risultato intero (interpretato come indice dell'array).

Il significato dell'operatore [ ] é duplice:

 


 

Array multidimensionali

 

In C++ (come in C) sono possibili array con qualsivoglia numero di dimensioni; tali array vanno definiti come nel seguente esempio (array tridimensionale):    float tabella[3][4][2];

NOTA : la formulazione appare un po' "strana", ma chiarisce il fatto che un array multidimensionale è da intendersi come un array di array. Nell'esempio: tabella è un array di 3 elementi, ciascuno dei quali è un array di 4 elementi, ciascuno dei quali è un array di 2 elementi di tipo float.

A differenza dal FORTRAN, in C++ (come in C)  gli array multidimensionali sono memorizzati con gli indici meno significativi a destra ("per riga", nel caso di array bidimensionali).
Per esempio, dato l'array A[2][3], i suoi elementi sono memorizzati nel seguente ordine:
              A[0][0] , A[0][1] , A[0][2] , A[1][0] , A[1][1] , A[1][2]

Per inizializzare un array multidimensionale, bisogna innestare tanti gruppi di parentesi graffe quante sono le singole porzioni monodimensionali dell'array, ed elencare gli elementi nello stesso ordine in cui saranno memorizzati.

Esempio, nel caso bidimensionale:               int dati[3][2] = { {8, -5} , {4, 0} , {-2, 6 } };

 


 

L'operatore sizeof e gli array

 

L'operatore sizeof, se l'operando é il nome di un array, restituisce il numero di bytes complessivi dell'array, che é dato dal numero degli elementi moltiplicato per la lunghezza in byte di ciascun elemento (la quale ovviamente dipende dal tipo dell'array).

  [p16]

 


 

Gli array in C++

 

Gli array descritti finora sono quelli "in stile C". Nei programmi in C++ ad alto livello sono scarsamente utilizzati. Al loro posto si preferisce usare alcune classi della Libreria Standard (come vedremo) che offrono flessibilità molto maggiori (per esempio la dimensione è modificabile dinamicamente e inoltre, negli array multidimensionali, si possono definire singole porzioni monodimensionali con dimensioni diverse).

 


 

Torna all'Indice