How Matrices Are Stored In Memory
Did you ever hear someone say that computers are stupid? Well,
in a way it's true. In general Computers have no idea what
exactly a matrix is. For them it's just a stream of numbers. So
when you say,
double matrix[10][10];
or
Real*8 matrix(10,10)
the information stored in these matrices has to be converted
into a stream of numbers and unfortunately the way this is done
is different for C and Fortran.
In C and in Pascal matrices are stored in row major order.
You
start with the first element in the first row, then comes the
second element in the first row and so on until you reached the
end of the first row. Then you take the first element of the
second row and so on.
The matrix,
would be stored as,
a b c d e f g h i
In Fortran matrices are stored in column major
order
You start with the first element of the first row, then comes
the first element of the second row and so on until you reached
the end of the first column. Then you take the first element of
the second column and so on.
The matrix,
would be stored as,
a d g b e h c f i
Back to matrix programming pitfalls