我有一个char
以列主顺序存储的 2x3 矩阵(是的,我知道这有点令人困惑,但请耐心等待),作为多维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 ]