我正在处理一个幻方问题,它使用一个大小为n*n的动态矩阵,它用数字1-n^2填充矩阵,并且每一行、每列和对角的和必须相同。该算法的条件之一是检查矩阵中的一个元素在其中一个循环中是否已经输入了一个数字。我在检查矩阵中的某个元素是否已经输入了一个数字时遇到了问题,所以我想知道如何检查一个元素是否为空。
下面是算法这一部分的代码:
else if(matrix[row][col] != 0)
{
row = row + 2;
col--;
}由于某种原因,它在包含循环的第5次迭代中触发这个if语句。我已经用幻方的算法在纸上计算出来了,循环的第五次迭代把它带到了矩阵中的一个空元素。我认为如果一个元素是空的,那么它保存的值是0吗?我对任何帮助都很感激,因为我很困惑。谢谢。
发布于 2014-09-25 03:57:11
默认情况下,C和C++中的数组不是空的。您需要显式地将元素设置为0或创建数组的方式使其初始化为0。
您所面对的是未定义的行为。未初始化的数组具有一些随机(读取垃圾)值,并以未定义的行为访问这些值。
在全局范围或使用static限定符创建的数组将初始化为0,或者可以使用initialization provided built in by the language,也可以显式地将每个元素设置为0。
这样做有多种方法,最好的方法取决于您想要从数组中提取什么行为。
https://stackoverflow.com/questions/26030213
复制相似问题