Row Major Order and Column Major Order in C

For Complete YouTube Video: Click Here

In this class, we will try to understand Row Major Order and Column Major Order in C.

We have clearly understood two-dimensional arrays in our previous classes.

As discussed in our previous class, we can store a two-dimensional array’s values in row-major order or column-major order.

Row-Major order or Column-Major order

For example, consider the two-dimensional array declarations as shown in the image below.

Two Dimensional Arrays in C Initialization
Row Major Order and Column Major Order in C Initialization

Row-Major Order

If the compiler is implemented using row-major order, then the values will get stored in the memory, as shown in the image below.

Row Major Order in C
Row Major Order in C

In the above image, the values 1, 2, 3, 4, 5, and 6 are stored at starting memory locations 50, 54, 58, 62, 66, and 70 (Assume int takes 4 bytes of space).

For example, if we want to access value two from memory, we must declare a[0][1].

This declaration is made under the visualization of a two-dimensional array as a matrix, as shown in the image below.

Row Major Order and Column Major Order in C Visualization
Row Major Order and Column Major Order in C Visualization

Now this declaration has to be converted into a memory address.

How will the compiler convert the [0][1] to a memory address?

The compiler uses the formula given below to convert it into a memory address.

Row major order formula
Row major order formula

In the above formula based upon our example, i and j are the array indexes; in this case, it is zero and one.

Also, m and n are the matrix indexes; in this case, it is two and three.

The base address is 50, and the size of the int is 4 bytes.

By substituting the corresponding values, we will get the memory address as 54.

((0*3) + 1) * 4 + 50 = 54.

Column Major Order

If the compiler is implemented by column-major order, the array elements will be stored in the memory, as shown in the image below.

Column Major Order in C
Column Major Order in C

Similar to the above discussion on row-major order, the formula for column-major order is shown below.

Column Major Order Formula
Column Major Order Formula