在C中打印2D数组

时间:2011-03-03 05:25:50

标签: python c arrays multidimensional-array

我想知道是否可以在C中打印2D数组,就像在python中一样。例如,如果我有int array1[10][10];然后填写数组,那么printf("%li", array1)似乎不起作用。在C中,是否有类似printf的内容可以将array1打印为[1, 2, 3, 4]?在python中它只是print(array1)

4 个答案:

答案 0 :(得分: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返回的内容。

编辑: Python可以打印整个数组,因为数组不仅存储在内存中的一堆数字中,还存储为存储其他信息的数据结构,例如长度数组。

答案 1 :(得分:1)

更具体地说,在C中打印2D数组时,您需要实现双循环:

//伪代码

  1. 假设数组名为myArray
  2. 获取数组的宽度,称之为j
  3. 获取数组的长度,称之为k
  4. for(a = 0; a&lt; j; a ++){
  5. .... for(b = 0; b&lt; k; b ++){
  6. ........ printf(“%d”,myArray [a] [b]);
  7. ....}
  8. }

答案 2 :(得分:0)

直截了当的答案是“不”......你必须自己编码。并且不可能在C中编写一般的转储程序例程,因为数组的大小是未知的。

答案 3 :(得分:-2)

   // Int array [10][10];
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
Print("%d",array[i][j]);
}
}

使用此代码可以在C

中打印2D数组