Python 用C语言打印二维数组

Python 用C语言打印二维数组,python,c,arrays,multidimensional-array,Python,C,Arrays,Multidimensional Array,我想知道是否可以像在python中一样用C打印2D数组。例如,如果我有intarray1[10][10]然后填充数组,然后printf(“%li”,array1)似乎不起作用。在C语言中,是否有类似于printf的东西可以将array1打印为[1,2,3,4]?在python中,它只是print(array1)不幸的是,没有标准的方法来实现这一点。打印阵列的方法是: int array1[] = {1, 2, 3, 4}; size_t i = 0; for (i = 0; i < 4;

我想知道是否可以像在python中一样用C打印2D数组。例如,如果我有
intarray1[10][10]
然后填充数组,然后
printf(“%li”,array1)
似乎不起作用。在C语言中,是否有类似于
printf
的东西可以将
array1
打印为
[1,2,3,4]
?在python中,它只是
print(array1)

不幸的是,没有标准的方法来实现这一点。打印阵列的方法是:

int array1[] = {1, 2, 3, 4};

size_t i = 0;
for (i = 0; i < 4; i++){
    printf("%d ", array1[i]);
}
有些人会认为应该使用
size\u t
而不是
int
作为索引,因为
sizeof
会返回这样的结果


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

简单的答案是“否”。。。你必须自己编写代码。而且不可能用C编写通用转储程序例程,因为数组的大小未知。

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

//伪码

  • 假设数组名为myArray
  • 获取数组的宽度,称之为j
  • 获取数组的长度,称为k
  • 对于(a=0;a
  • …对于(b=0;b
  • ……printf(“%d”,myArray[a][b])
  • ..}
  • }
  • //Int数组[10][10];
    
    对于(i=0;i)您的标题提到了2D数组,但您的示例是关于1D数组的。这是有意的吗?这是一个nit,但
    [1,2,3,4]
    不是2D数组的打印方式。我知道。我知道。我非常熟悉python,不想键入一个你们可能已经有过经验的示例。有没有人编写过一个函数,可以以最简洁的方式实现它?最好尽可能避免数组大小的文字(干式原则).相反,
    #定义NELTS(a)(sizeof(a)/sizeof((a)[0])//数组元素的数量
    ,并将
    4
    替换为
    NELTS(array1)
    @Teknolagi“数组的大小……已知”。也就是说,大小存储为数组的一个属性,并且可以查询。大多数现代编程语言都是这样。哦,我明白了……那么C中是否有一个基本的实现?@tekknolagi如果你问是否可以用C实现具有长度属性的数组……你可以对包含单一类型的数组执行此操作,例如。,int,但不是一般的,因为C没有反射、泛型类型或类似的所需机制。C是原始的,非常原始的。如果您想要这样的东西,请尝试更现代的语言,如D或Scala。它甚至不会用C编译。
    int array1[] = {1, 2, 3, 4};
    
    int i = 0;
    for (i = 0; i < sizeof(array1)/sizeof(int); i++){
        printf("%d ", array1[i]);
    }
    
       // Int array [10][10];
    for(i=0;i<10;i++)
    {
    for(j=0;j<10;j++)
    {
    Print("%d",array[i][j]);
    }
    }