Multidimensional Arrays in C
C language supports multidimensional arrays. The general form of a multidimensional array declaration is as follows:
type name[size1][size2]...[sizeN];
For example, the following declaration creates a three-dimensional 5x10x4 integer array:
int threedim[5][10][4];
Two-Dimensional Arrays
The simplest form of the multidimensional array is the two-dimensional array. A two-dimensional array is essentially a list of one-dimensional arrays. To declare a two-dimensional integer array with x rows and y columns, the form is as follows:
type arrayName [ x ][ y ];
Where type can be any valid C data type and arrayName is a valid C identifier. A two-dimensional array can be thought of as a table with x rows and y columns. Here is a two-dimensional array with 3 rows and 4 columns:
int x[3][4];
Hence, each element in the array is identified by an element name of the form a[i, j], where a is the array name, and i and j are the subscripts that uniquely identify each element in a.
Initializing Two-Dimensional Arrays
Multidimensional arrays may be initialized by specifying bracketed values for each row. Here is an array with 3 rows and 4 columns:
int a[3][4] = {
{0, 1, 2, 3} , /* Initialization for row indexed by 0 */
{4, 5, 6, 7} , /* Initialization for row indexed by 1 */
{8, 9, 10, 11} /* Initialization for row indexed by 2 */
};
The nested brackets, which indicate the intended row, are optional. The following initialization is equivalent to the previous example:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
Accessing Two-Dimensional Array Elements
Elements in a two-dimensional array are accessed using the subscripts, i.e., the row index and the column index of the array. For example:
int val = a[2][3];
The above statement will take the 4th element from the 3rd row of the array. You can verify this from the above diagram. Let's look at the following program, which processes a two-dimensional array using nested loops:
Example
#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;
}
When the above code is compiled and executed, it produces the following result:
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
As mentioned above, you can create arrays of any dimension, but one-dimensional and two-dimensional arrays are the most common.