本当の初心者の質問は間違いありませんが、私はこの振る舞いに頭を悩ませることはできません。2次元配列を初期化し、関数を呼び出して特定の値を出力します。プログラムと結果を以下に示します。
int
main(void)
{
int matrix[3][5] =
{
{14,7,6,55,2},
{8,33,12,88,24},
{19,20,21,90,7}
};
printArray(3, 5, matrix);
printArray(2, 3, matrix);
return 0;
}
void
printArray(int rows, int columns, int matrix[rows][columns])
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
printf("%3i ", matrix[i][j]);
printf("\n");
}
printf("\n");
}
14 7 6 55 2
8 33 12 88 24
19 20 21 90 7
14 7 6
55 2 8
2回目にprintArray()が呼び出されると、実際に次の行にアクセスするのではなく、最初の行から新しい行に値を出力し続けるようです。確かにインデックス値は一定なのでわかりませんね。(つまり、matrix [1] [2]は(この場合)8ではなく12でなければなりません。
前もって感謝します。