I can't understand C matrices!

Previous Memory, C Variables, and Pointers Next

Q: I can't understand matrices in C (not TI-Basic matrices, but matrices which are the part of the C language)!
A: Basically, to declare a matrix, you need to use:
type name[dimension1][dimension2];
for example:
int a[5][5];
And, to access element of the matrix, you need to use:
name[index1][index2];
for example:
a[2][3] = 10;
or
x = a[1][2];
But note that indices are not from 1 to dimension, but from 0 to dimension-1. So, in the above example, both indices are in range 0 to 4, not 1 to 5. For example to fill all matrix by zeroes, you can use this code:
int a[5][5], i, j;     // A 5x5 array of ints, and two single ints
for(i = 0; i < 5; i++) for (j = 0; j < 5; j++) a[i][j] = 0;
although the experienced C programmer will simply use
memset (a, 0, 5 * 5 * sizeof(int));
to make it faster.