Multi Dimensional Arrays in C Programming

C programming language supports multi dimensional Arrays.

  • Multi dimensional arrays have more than one subscript variables.
  • Multi dimensional array is also called as matrix.
  • Multi dimensional arrays are array of arrays.

Declaration of Multi Dimensional Array

data_type array_name[size1][size2]...[sizeN];

Above statement will declare an array of N dimensions of name array_name, where each element of array is of type data_type. The maximum number of elements that can be stored in a multi dimensional array array_name is size1 X size2 X size3...sixeN.

For Example:
Declaration of two dimensional integer array
    int board[8][8];
Declaration of three dimensional character array
    char cube[50][60][30];

Two Dimensional Array in C

Two dimensional arrays are most common type of multi dimensional array. A two dimensional array in C language is represented in the form 2D matrix having rows and columns.

  • A two dimensional matrix is an array of one dimensional arrays.
  • Two dimensional array requires two subscript variables or indexes.
  • One subscript represents the row index while other represent column index of an element in matrix.
  • Elements of a two dimensional array are stored in contiguous memory location. First all elements of first row are store then all elements of second row and so on.
C Two Dimensional Array Memory Map

Any element in two dimensional matrix is uniquely identified by array_name[row_Index][column_Index], where row_index and column_index are the subscripts that uniquely specifies the position of an element in a 2D matrix.

An element in second row and third column of an two dimensional matrix whose name is board is accessed by board[1][2].

Like single dimensional array, indexing starts from 0 instead of 1.

We can declare a two dimensional matrix of R rows and C columns as follows:

data_type array_name[R][C];
For Example:
A two dimensional integer matrix of 3 rows and 3 columns can be declared as
int score[3][3];

Initialization of Two Dimensional Array

Two dimensional arrays can be initialized by specifying elements for each row inside curly braces. The following declaration initializes a two dimensional matrix of 4 rows and 3 columns.

int matrix[4][3] = {
                    {1, 2, 3},    /* Initialization of first row */
                    {4, 5, 6},    /* Initialization of second row */
                    {7, 8, 9},    /* Initialization of third row */
                    {10, 11, 12}, /* Initialization of fourth row */
                   };
Similarly, we can initialize any multi dimensional array.
A two dimensional matrix can be initialized without using any internal curly braces as follows:
int matrix[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

In above declaration, compiler will assign first four values(1, 2, 3 and 4) to first row of matrix and within a row it will populate elements from left to right. Then next four elements to second row and so on.

C program to find sum of all elements of two dimensional array

#include <stdio.h>
#include <conio.h>
 
int main(){
    /* Two dimentional array declaration */
    int matrix[20][20];
    int rowCounter, colCounter, rows, cols, sum=0;
    
    printf("Enter size of a matrix\n");
    scanf("%d %d", &rows, &cols);
    /* Populating elements inside matrix */
    printf("Enter elements of a matrix of size %dX%d\n", rows, cols);
    for(rowCounter = 0; rowCounter < rows; rowCounter++){
        for(colCounter = 0; colCounter < cols; colCounter++){
            scanf("%d", &matrix[rowCounter][colCounter]);
        }
    }
    /* Accessing all elements of matrix to calculate their sum */
    for(rowCounter = 0; rowCounter < rows; rowCounter++){
        for(colCounter = 0; colCounter < cols; colCounter++){
            sum += matrix[rowCounter][colCounter];
        }
    }
    
    printf("Sum of all elements = %d", sum);
    getch();
    return 0;
}
Above program first declares a matrix of size 20X20 then populates it by taking input form user. Now using two for loops it access each element of matrix and add their values to a variable sum.

Output
Enter size of a matrix
3 3
Enter elements of a matrix of size 3X3
1 2 3
4 5 6
7 8 9
Sum of all elements = 45

Sample Matrix C Programs

C program to add two matrix
C Program for subtraction of two matrix
C Program to find transpose of matrix
C Program to find sum of diagonal elements of matrix
C program to find scalar multiplication of a matrix
C program to print lower triangular matrix
C program to print upper triangular matrix
C program to compare two matrix
C program to check identity matrix
C Program to print a matrix diagonally