Array Multidimensionali

I giochi sono semplici fintanto che si gestiscono array ad una singola dimensione, si complicano quando sono a più dimensioni. E’ infatti possibile che gli elementi di un array siano a loro volta altre array, si parla in questo caso di array di array.

L’utilizzo di array multidimensionali dovrebbe però essere molto ponderato sopratutto quando il numero di elementi é notevole, perché ogni dichiarazione comporta una relativa assegnazione di memoria, determinando allocazioni che possono rivelarsi di grandi dimensioni.

Array bidimensionali

Un array bidimensionale, definita anche matrice, é un array i cui elementi sono a loro volta altre array e queste dimensioni possono concettualmente rappresentare una tabella, composta da righe e colonne.

Dichiarazione

La dichiarazione di un array bidimensionale avviene in modo analogo all’array monodimensionale, tranne che per il fatto che si aggiunge una ulteriore coppia di parentesi quadre:

//Dichiarazione di array bidimensionale
data_type identificatore[numero_righe][numero_colonne];

Come nel caso di array a dimensione singola, i valori inseriti tra parentesi quadre rappresentano costanti intere.

Inizializzazione

Anche un array multidimensionale può essere inizializzato contestualmente alla sua dichiarazione, osservando però la seguente sintassi:

//Dichiarazione ed inizializzazione di array bidimensionale
data_type identificatore[numero_righe][numero_colonne] = {
    {value_0, value_1,value_2,…,value_n}, /* NB: inserire virgola */
    {value_0, value_1,value_2,…,value_n}
}; /* terminare con ; */

Valgono tutte le regole di inizializzazione già previste per gli array monodimensionali.

Accesso all’array (subscripting)

L’accesso in lettura/scrittura di un array multidimensionale avviene con le medesime modalità delle monodimensionali, eccezion fatta per una coppia di parentesi quadre da aggiungere a suffisso:

//Scrittura
identificatore[indice_riga][indice_colonna] = value;
//Lettura
altra_variabile = identificatore[indice_riga][indice_colonna];

Anche i cicli iterativi sulle variabili multidimensionali non sono poi molto diversi, prevedendo però in questo caso due o più cicli iterativi inclusi l’uno nell’altro.

//Ciclo iterativo per array multidimensionale
//Loop esterno
for (int i = 0; i < lunghezza_riga; i++) {
    //Loop interno
    for (int y = 0; y < lunghezza_colonna; y++) {
        printf(“qualcosa %d”, array[i][y];
    }
}

Pubblicato da Luca Scandroglio

Sono un consulente tecnico informatico, un web designer e uno sviluppatore italiano. Aiuto le aziende a dotarsi degli strumenti tecnologici e digitali per superare le sfide del mercato di oggi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *