Array multidimensionali in C
Il linguaggio di programmazione C consente array multidimensionali. Ecco la forma generale di una dichiarazione di array multidimensionale:
type name[size1][size2]...[sizeN];
Ad esempio, la seguente dichiarazione crea una matrice intera tridimensionale -
int threedim[5][10][4];
Array bidimensionali
La forma più semplice di array multidimensionale è l'array bidimensionale. Un array bidimensionale è, in sostanza, un elenco di array unidimensionali. Per dichiarare un array intero bidimensionale di dimensione [x] [y], dovresti scrivere qualcosa come segue:
type arrayName [ x ][ y ];
Dove type può essere qualsiasi tipo di dati C valido e arrayNamesarà un identificatore C valido. Un array bidimensionale può essere considerato come una tabella che avrà x numero di righe ey numero di colonne. Una matrice bidimensionalea, che contiene tre righe e quattro colonne può essere visualizzato come segue:
Pertanto, ogni elemento dell'array a è identificato dal nome di un elemento del modulo a[ i ][ j ], dove "a" è il nome dell'array e "i" e "j" sono i pedici che identificano in modo univoco ogni elemento in "a".
Inizializzazione di array bidimensionali
Gli array multidimensionali possono essere inizializzati specificando valori tra parentesi per ogni riga. Di seguito è riportato un array con 3 righe e ogni riga ha 4 colonne.
int a[3][4] = {
{0, 1, 2, 3} , /* initializers for row indexed by 0 */
{4, 5, 6, 7} , /* initializers for row indexed by 1 */
{8, 9, 10, 11} /* initializers for row indexed by 2 */
};
Le parentesi graffe nidificate, che indicano la riga desiderata, sono facoltative. La seguente inizializzazione è equivalente all'esempio precedente:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
Accesso agli elementi di array bidimensionali
Si accede a un elemento in un array bidimensionale utilizzando gli indici, ovvero l'indice di riga e l'indice di colonna dell'array. Ad esempio:
int val = a[2][3];
La dichiarazione precedente prenderà il quarto elemento dalla terza riga dell'array. Puoi verificarlo nella figura sopra. Controlliamo il seguente programma in cui abbiamo usato un ciclo annidato per gestire un array bidimensionale -
#include <stdio.h>
int main () {
/* an array with 5 rows and 2 columns*/
int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int i, j;
/* output each array element's value */
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 2; j++ ) {
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
}
}
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8
Come spiegato in precedenza, è possibile disporre di array con un numero qualsiasi di dimensioni, sebbene è probabile che la maggior parte degli array che crei avrà una o due dimensioni.