如何确定多维数组中的元素是否为空

时间:2014-09-25 03:55:08

标签: c++ arrays matrix multidimensional-array

我正在研究一个使用大小为n * n的动态矩阵的幻方问题。它用数字1-n ^ 2填充矩阵,每行,列和对角线的总和必须相同。该算法的一个条件是在一个循环期间检查矩阵中的元素是否已经在其中具有数字输入。我在检查矩阵中的一个元素是否已经输入了一个数字时遇到问题,所以我想知道如何检查一个元素是否为空。

以下是该算法部分的代码:

else if(matrix[row][col] != 0)
    {
        row = row + 2;
        col--;
    }

由于某种原因,它会在包含循环的第5次迭代中触发此if语句。我已经在纸上使用魔术方法的算法进行了研究,并且循环的第5次迭代将其带到矩阵中的空元素。我认为如果一个元素为空它保持值0?我很感激,因为我很困惑。谢谢。

1 个答案:

答案 0 :(得分:5)

默认情况下,C和C ++中的数组不为空。您需要将元素显式设置为0或以初始化为0的方式创建数组。

您面临的是未定义的行为。未初始化的数组具有一些随机(读取垃圾)值,并以未定义的行为访问这些结果。

在全球范围内或使用static限定符创建的数组将初始化为0,或者您可以使用initialization provided built in by the language,或者您可以将每个元素显式设置为{{1 }}。
有多种方法可以做到这一点,最好的方法取决于你想从数组中提取的行为。