C不打印2D动态数组内容

问题描述

我正在尝试制作一个二维动态数组,用于计算4或9个数字的确定性。

尽管使用指针和动态数组在1D数组中可以完美地工作,但我无法将自己的头围在2D方面。到目前为止,程序已正确编译并接收输入。但是,它不打印任何内容。我什至尝试打印单个单元格内容。没事。

代码如下:

解决方法

  • 您仅分配了一个数组来存储指向每一行的指针。您必须分配数组来存储每一行​​的值。
  • META-INF/org.jboss.weld.enableUnsafeProxies的大小计算错误。 arDet的元素是arDet。在某些环境中,int*(例如4个字节)的大小比int(例如8个字节)短,并且您的代码将在此类环境中引起麻烦。
  • 在C中int*的投放结果为discouraged
malloc()

还请注意,注释行

    arDet = malloc(sizeof(arDet[0])*size); /* fix size calculation */
    for(i = 0 ; i < size; i++)
    {
        arDet[i] = malloc(sizeof(arDet[i][0]) * size); /* add this */
        for(j = 0 ; j < size; j++)
        {
            scanf("%d",&arDet[i][j]);
        }
    }

没有意义,因为C不支持两个指针相乘,并且当 // printf("%d",arDet[0]*(arDet[4]*arDet[8] - arDet[7]*arDet[5]) - arDet[1]*(arDet[3]*arDet[8] - arDet[5]*arDet[6]) + arDet[2]*(arDet[3]*arDet[7] - arDet[6]*arDet[4])); 为3时,大于2的索引超出范围。