I have written a program that does matrix multiplication as in the example below and which gives me correct results (compared to online calculators).

Question about 2D-array notation and matrices-matrixab-png

Code:
int A[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
int B[3][3] = {
    {a, b, c},
    {d, e, f},
    {g, h, i}
};

// multiplication along the lines of
// (1 * a) + (2 * d) + (3 * g)
C[0][0] = A[0][0] * B[0][0] + A[0][1] * B[1][0] + A[0][2] * B[2][0];
...
However I'm a little unsure whether I can write matrices that I find in math texts in the order in which I see them.

Taking this matrix for right-handed, CCW rotation around the x-axis for example:

Question about 2D-array notation and matrices-matrixrotx-png

Can i write this as
Code:
// c, s are symbolic
double Rx[3][3] = {
    {1, 0, 0},
    {0, c, s},
    {0,-s, c}
};
Or do the C++ rows represent the columns in the picture above, such that the definition becomes:
Code:
double Rx[3][3] = {
    {1, 0, 0},
    {0, c,-s},
    {0, s, c}
};
To summarize, I'm unsure whether matrices, they way they are written in math texts, can simply be written into C++ arrays "as they appear".