我在使用 C++ 2D 数组编码时遇到了一个问题。只是一个小问题,下面的代码是什么意思?
...
if(array[x][y] >= 9){
...
}
...
这是否意味着当数组的 x 和 y 之和大于或等于 9 时,只有 IF 的主体会运行?或者 ........?
请解释并提供一些简单的例子。
我在使用 C++ 2D 数组编码时遇到了一个问题。只是一个小问题,下面的代码是什么意思?
...
if(array[x][y] >= 9){
...
}
...
这是否意味着当数组的 x 和 y 之和大于或等于 9 时,只有 IF 的主体会运行?或者 ........?
请解释并提供一些简单的例子。
数组是二维的,这意味着元素在array[x][y]
与仅需要 1 个索引的 1D 数组不同,2D 数组需要 2 个索引,其形式array[x][y]
可能是嵌套的 for 循环。
您可以像这样遍历这样的数组
for (int x = 0; x < arrayLength; x++) {
for (int y = 0; y < array[x]Length; y++) {
// do something with array[x][y]
}
}
其中arrayLength是array的长度,array[x] length是array[x]的长度。
因此,参考您发布的代码,它正在测试二维数组的成员是否大于或等于 9。
好的,让我们从基础开始。
一维阵列
你怎么能想象一个普通的数组?你可以说一个普通的数组就像一个数轴:
|-------------------------------| where every - is one element in your array
左侧的第一个“-”是 myArray[0] 处的元素(“|”只是象征它有开始和结束)。
二维阵列
2D 数组可以可视化为棋盘、书架或具有列和行的表格。
|-------------------------------|
|-------------------------------|
|-------------------------------|
|-------------------------------|
就像在国际象棋中一样,您需要 2 个值来处理一个元素。如果您只指定一个值,编译器可能知道您的值的行,但不知道其列(或相反)。这意味着您需要 x 和 y 坐标(这是坐标系的视觉类比)。为了解决一个值,你必须这样做:
myArray[x][y] 其中 x 可以是我们棋盘的行,y 可以是列。
在您的情况下,您的二维数组很可能充满整数。'if' 语句检查存储在 myArray[x][y] 中的值是否大于 9。如果 myArray[x][y] 大于 9,则此语句返回 true,并且将执行其中的代码。
在执行“if”语句内的代码后,程序将继续执行 if 语句后的代码。二维数组可以理解为包含数组的数组。
如果您认为 3 维数组是可能的,那么您是对的。在这里,您需要 3 个坐标来描述一个点,因为您有深度、高度和长度(这里我说的是视觉长度,而不是元素总数的长度。)。
我不知道这是否有帮助,但这当然是解释多维数组如何工作的一种非常直观的方法。
例子
int myArray[3][3] = {{1, 2, 3}, // row 0
{4, 5, 6}, // row 1
{7, 8, 10}}; // row 2
在这种情况下,您的 if 语句只会在 x = 2 和 y = 2 时执行,因为 myArray[2][2] = 10
这意味着“如果坐标 (x,y) 处的元素大于或等于 9...”。
没有加法运算。该数组可能以最小维度 (x+1, y+1) 声明。
int array[2][2] = {{12, 6}, {3, -2}};
int x=1, y=0;
if(array[x][y] >= 9){...} // array[1][0] equals 3, condition is false