在C中打印二维数组

-1 投票
4 回答
1274 浏览
提问于 2025-04-16 12:53

我在想,能不能像在Python里那样打印一个二维数组,在C语言里也是可以的。比如说,如果我有一个叫做 int array1[10][10]; 的数组,然后把这个数组填满了,接着用 printf("%li", array1) 来打印,似乎不太行。在C语言里,有没有类似于 printf 的东西,可以把 array1 打印成 [1, 2, 3, 4] 这样的格式?在Python里,只需要用 print(array1) 就可以了。

4 个回答

0

简单来说,就是“不能”。你得自己写代码。而且在C语言中,写一个通用的转储程序是不可能的,因为数组的大小是未知的。

1

更具体来说,当你在C语言中打印一个二维数组时,你需要使用两个嵌套的循环:

//伪代码示例

  1. 假设这个数组叫做myArray
  2. 获取数组的宽度,叫它j
  3. 获取数组的长度,叫它k
  4. 对于每一行(a从0开始,直到小于j):
  5. ....对于每一列(b从0开始,直到小于k):
  6. ........打印myArray[a][b]的值;
  7. ....}
  8. }
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 可以打印整个数组,因为数组不仅仅是存储在内存中的一堆数字,而是作为一种数据结构,里面还存储了其他信息,比如数组的长度。

撰写回答