CMulti-Dimensional Arrays

Multidimensional Arrays in C

In C programming, multidimensional arrays are arrays of arrays, which are useful when you need to store data in a tabular form. A common use case of multidimensional arrays is working with matrices. Matrices are typically represented as 2D arrays, where each element of the array can be accessed using two indices: one for the row and one for the column.

1. What is a Multidimensional Array?

A multidimensional array is an array that has more than one dimension. The most commonly used multidimensional array is a 2D array, which can be thought of as a table or grid of data.

Syntax for Declaring a 2D Array:

type array_name[row_size][column_size];

Where:

  • type is the data type (e.g., int, float).
  • array_name is the name of the array.
  • row_size is the number of rows.
  • column_size is the number of columns.

Example: Declaring a 2D Array

#include <stdio.h>
 
int main() {
    int matrix[2][2];  // Declare a 2x2 integer matrix
 
    // Initializing elements of the matrix
    matrix[0][0] = 1;
    matrix[0][1] = 2;
    matrix[1][0] = 3;
    matrix[1][1] = 4;
 
    // Print the matrix
    printf("Matrix:\n");
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}

Explanation:

  • This code declares a 2x2 matrix and initializes its elements.
  • It then prints the matrix in a row-column format.

Example Output:

Matrix:
1 2 
3 4

2. Matrix Operations

2.1. Matrix Addition

Matrix addition involves adding the corresponding elements of two matrices. For two matrices to be added, they must have the same dimensions.

Example: Matrix Addition

#include <stdio.h>
 
int main() {
    int matrix1[2][2] = {{1, 2}, {3, 4}};
    int matrix2[2][2] = {{5, 6}, {7, 8}};
    int result[2][2];  // Resultant matrix to store the sum
 
    // Matrix addition
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            result[i][j] = matrix1[i][j] + matrix2[i][j];
        }
    }
 
    // Print the result
    printf("Result of Matrix Addition:\n");
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}

Explanation:

  • We add corresponding elements of matrix1 and matrix2 and store the result in the result matrix.
  • Both matrices are 2x2, so addition is done element-wise.

Example Output:

Result of Matrix Addition:
6 8 
10 12

2.2. Matrix Subtraction

Matrix subtraction involves subtracting the corresponding elements of one matrix from another. Just like matrix addition, both matrices must have the same dimensions for subtraction to be possible.

Example: Matrix Subtraction

#include <stdio.h>
 
int main() {
    int matrix1[2][2] = {{10, 20}, {30, 40}};
    int matrix2[2][2] = {{5, 5}, {10, 10}};
    int result[2][2];  // Resultant matrix to store the difference
 
    // Matrix subtraction
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            result[i][j] = matrix1[i][j] - matrix2[i][j];
        }
    }
 
    // Print the result
    printf("Result of Matrix Subtraction:\n");
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}

Explanation:

  • We subtract corresponding elements of matrix2 from matrix1 and store the result in the result matrix.
  • Both matrices are 2x2, so subtraction is done element-wise.

Example Output:

Result of Matrix Subtraction:
5 15 
20 30

2.3. Matrix Multiplication

Matrix multiplication is slightly more complicated than addition or subtraction. To multiply two matrices, the number of columns of the first matrix must equal the number of rows of the second matrix. The result of the multiplication will have the number of rows of the first matrix and the number of columns of the second matrix.

Example: Matrix Multiplication

#include <stdio.h>
 
int main() {
    int matrix1[2][2] = {{1, 2}, {3, 4}};
    int matrix2[2][2] = {{5, 6}, {7, 8}};
    int result[2][2] = {{0, 0}, {0, 0}};  // Resultant matrix initialized to 0
 
    // Matrix multiplication
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 2; k++) {
                result[i][j] += matrix1[i][k] * matrix2[k][j];
            }
        }
    }
 
    // Print the result
    printf("Result of Matrix Multiplication:\n");
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}

Explanation:

  • Matrix multiplication involves the sum of products of corresponding elements from rows of the first matrix and columns of the second matrix.
  • We multiply each element of matrix1 by the corresponding element of matrix2, accumulating the results in the result matrix.

Example Output:

Result of Matrix Multiplication:
19 22 
43 50

3. Conclusion

Multidimensional arrays in C, particularly 2D arrays, are a powerful tool for working with data in tabular formats, such as matrices. Here’s a recap of what we covered:

  1. Matrix Addition: Adding two matrices element-wise.
  2. Matrix Subtraction: Subtracting two matrices element-wise.
  3. Matrix Multiplication: A more complex operation that involves calculating the sum of products of corresponding elements from rows and columns.

Understanding matrix operations is crucial for many fields, such as computer graphics, physics simulations, and data processing. Mastering multidimensional arrays will enable you to efficiently handle and manipulate such data in your C programs.