Array multidimensionale o matrice in C

Nel linguaggio C un array multidimensionale è semplicemente un array i cui elementi sono a loro volta degli array. I vettori visti nella pagina precedente prendono anche il nome di array monodimensionali in quanto costituiti da un singolo array, mentre array bidimensionali, cioè array di array, prendono il nome di matrici. Chiaramente gli array multidimensionali non si fermano a due dimensioni, ma possono essere applicati per ottenere rappresentazioni in più dimensioni..

Analogamente agli array monodimensionali, anche gli array multidimensionali sono costituiti da elementi dello stesso tipo e sono sempre definiti da una struttura organizzata, accessibile con l’utilizzo di indici definiti dal numero di array da cui è costituito l’array multidimensionale.
Di seguito viene riportata la sintassi generale degli array multidimensionali:


 
tipo_dato nome_array[dimensione_array_1][dimensione_array_2]...[dimensione_array_N];

dove il numero di dimensione_array definisce il numero di dimensioni dell’array.

La forma più semplice di array multidimensionale che si può implementare è quella dell’array bidimensionale, detta anche matrice, che è costituita semplicemente da due array, che di fatto permettono di creare una tabella. Per esempio per creare una matrice usiamo la seguente dichiarazione:


 
int mat[N][M];

dove il primo valore tra parentesi quadre indica il numero di righe, mentre il secondo il numero di colonne.
In questo caso per accedere ad un valore dobbiamo utilizzare un indice definito da due valori, il primo indica la riga e va 0 a N-1, mentre il secondo la colonna con valori che vanno da 0 ad M-1. Per esempio per accedere ad un valore che si trova nella seconda riga e terza colonna, dobbiamo usare l’indice [1][2] (ricordandosi che le posizioni iniziano da 0 e non da 1).

Inizializzare un array multidimensionale in C

Per poter inizializzare un array multidimensionale, si può procedere come nel caso degli array monodimensionali, effettuando una inizializzazione durante la dichiarazione oppure inserendo i valori successivamente. Per quanto riguarda il primo modo, si può procedere nella seguente maniera:


 
int mat[2][3] = {{0,2,9}, {5,3,6}};

dove le parentesi graffe interne utilizzate per indicare le righe risultano essere facoltative, di conseguenza si può procedere utilizzando la seguente forma:


 
int mat[2][3] = {0,2,9,5,3,6};

Per quanto riguarda il secondo metodo si può procedere ad inserire manualmente indice per indice ciascun valore all’interno dell’array multidimensionale, oppure utilizzare cicli for annidati (un ciclo for per dimensione).

Esempio utilizzo array multidimensionale in C

Nel seguente esempio creiamo una matrice di dimensione [3][2] e chiediamo all’utente di inserire dei valori da tastiera ed una volta terminato stampiamo a schermo l’intera struttura dell’array multidimensionale. Per semplificare l’utilizzo del codice con array di dimensione diversa definiamo due valori N ed M in cima alla pagina per indicare il numero di righe e di colonne, senza dover ripetere ogni volta i numeri.


 
#include <stdio.h>
#define N 3
#define M 2

int main(){
    int matrice[N][M];
    
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            printf("Inserisci un numero: ");
            scanf("%d", &matrice[i][j]);
        }
        printf("\n");
    }
    
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            printf("%d ", matrice[i][j]);
        }
        printf("\n");
    }

    return 0;
}


Inserisci un numero: 3 Inserisci un numero: 7 Inserisci un numero: 2 Inserisci un numero: 8 Inserisci un numero: 7 Inserisci un numero: 0 3 7 2 8 7 0

Indice pagine linguaggio C: