在C中打印空的2d数组

时间:2014-02-01 19:51:28

标签: c arrays 2d

我正在编写一个采用2D数组并使用开关盒的程序,您可以指示它填充随机数和/或打印数组等。

在我用随机数填充数组之前,我去打印数组只是为了看看它会做什么,我得到了这个:

 176185448    1    1    01430232144
 32767180624652332767143023216832767
 143023216832767    0    11430232192
 32767176185344    1    0   14
 143023220832767    0    0    0
     0    0    0    0    0

这是我的打印数组函数的代码,我从main传递plist:

 void PrintArray2D(int plist[M][N])
  {
  size_t row, column; //counter

    for (row = 0; row < M; ++row) 
    {
        for (column = 0; column < N; ++column) 
        {
            printf ("%5d" , plist[row][column]);
        }

        printf ("\n");
    }
}

我的计划工作正常。当我填写随机数然后打印时,我的输出是正确的。数组大小是6乘5.我只是好奇为什么,当它应该是一个空数组时,任何东西都被打印出来。对于我得到的具体输出更加好奇。

3 个答案:

答案 0 :(得分:2)

您正在打印未初始化数组的值。在这种情况下,程序的行为是未定义。你可能得到任何预期的或意外的结果。
您获得的值可能是存储在该位置的某个先前值(称为垃圾值)。您的程序可能会产生错误的结果。

答案 1 :(得分:2)

你是在初始化阵列吗?

如果没有,你很可能事先得到记忆中的遗体。

要快速将其初始化为全零,无论它在何处定义都具有类似

的内容
int list[M][N] = {0};

只是一个警告,零并不意味着将所有值设置为0.它将第一个元素设置为花括号的内容。所以:

int values[M] = {1,2,3};

将前三个数字设置为1,2和3,其余为零。

答案 2 :(得分:2)

必须初始化C中的变量。如果你没有初始化一个变量(比如一个数组),它就会包含一些非逻辑数字(比如一个内存单元的地址 - 之前在那个内存位置的值) 你打印的东西就是那个!你不能在像Java这样的语言中这样做,如果你这样做,就会出现编译错误。 我希望这有帮助