0

我在使用 C++ 2D 数组编码时遇到了一个问题。只是一个小问题,下面的代码是什么意思?

...

if(array[x][y] >= 9){

...

}

...

这是否意味着当数组的 x 和 y 之和大于或等于 9 时,只有 IF 的主体会运行?或者 ........?

请解释并提供一些简单的例子。

4

3 回答 3

1

数组是二维的,这意味着元素在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。

于 2012-08-02T14:25:15.057 回答
1

好的,让我们从基础开始。

一维阵列

你怎么能想象一个普通的数组?你可以说一个普通的数组就像一个数轴:

|-------------------------------| 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

于 2012-08-02T15:52:08.357 回答
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
于 2012-08-02T14:55:13.317 回答