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