在C中打印二维数组
我在想,能不能像在Python里那样打印一个二维数组,在C语言里也是可以的。比如说,如果我有一个叫做 int array1[10][10];
的数组,然后把这个数组填满了,接着用 printf("%li", array1)
来打印,似乎不太行。在C语言里,有没有类似于 printf
的东西,可以把 array1
打印成 [1, 2, 3, 4]
这样的格式?在Python里,只需要用 print(array1)
就可以了。
4 个回答
0
简单来说,就是“不能”。你得自己写代码。而且在C语言中,写一个通用的转储程序是不可能的,因为数组的大小是未知的。
1
更具体来说,当你在C语言中打印一个二维数组时,你需要使用两个嵌套的循环:
//伪代码示例
- 假设这个数组叫做myArray
- 获取数组的宽度,叫它j
- 获取数组的长度,叫它k
- 对于每一行(a从0开始,直到小于j):
- ....对于每一列(b从0开始,直到小于k):
- ........打印myArray[a][b]的值;
- ....}
- }
3
很遗憾,目前没有一种标准的方法来做到这一点。打印你的数组的方法是:
int array1[] = {1, 2, 3, 4};
size_t i = 0;
for (i = 0; i < 4; i++){
printf("%d ", array1[i]);
}
需要注意的是,为了更准确,你可以使用 sizeof
来获取数组的大小:
int array1[] = {1, 2, 3, 4};
int i = 0;
for (i = 0; i < sizeof(array1)/sizeof(int); i++){
printf("%d ", array1[i]);
}
有些人认为你应该用 size_t
来作为索引,而不是 int
,因为 sizeof
返回的就是 size_t
类型。
编辑:Python 可以打印整个数组,因为数组不仅仅是存储在内存中的一堆数字,而是作为一种数据结构,里面还存储了其他信息,比如数组的长度。