我有一個2x3 char
矩陣存儲在列的主要順序(是的,我知道這有點令人困惑,但請耐心等待),作爲多維char[3][2]
數組(注意指數切換)。現在,我想打印這個矩陣。但是,由於某種原因,最後一列未打印。這是爲什麼?爲什麼不打印我矩陣的最後一列?
這裏是我的代碼:
#include <stdio.h>
#define ARRAY_SIZE(x) ((sizeof (x))/(sizeof((x)[0])))
typedef char matrix[3][2];
void print_matrix(matrix a)
{
for (size_t i = 0; i < ARRAY_SIZE(a[0]); i++) {
printf("[");
for (size_t j = 0; j < ARRAY_SIZE(a); j++) {
printf(" %c", a[j][i]);
}
printf(" ]\n");
}
}
int main(int argc, char *argv[])
{
matrix a = {{'a','b'},{'c','d'},{'e','f'}};
printf("sizeof(a) = %zu\n", ARRAY_SIZE(a));
printf("sizeof(a[0]) = %zu\n", ARRAY_SIZE(a[0]));
print_matrix(a);
return 0;
}
編譯和運行使我這個:
$ gcc -Wall -std=c99 foo.c; ./a.out
sizeof(a) = 3
sizeof(a[0]) = 2
[ a c ]
[ b d ]
預期輸出:
[ a c e ]
[ b d f ]
感謝您的快速回復。你和rra的回答基本上是一樣的,但我已經接受了他的回答,因爲沒有其他原因,我只是先讀它:/ – hakoja 2013-03-18 00:03:29