使用循环变量作为C ++数组的索引

时间:2017-02-10 02:04:20

标签: c++

我不明白这一点,它所说的部分,“myArray [x] = 42;” 从什么时候开始进入myArray?至少有人解释我这个脚本是如何工作的?

{ int = myArray[5];
for (int x = 0; x < 5; x++) {
myArray[x] = 42;

cout << x << ":" << myArray[x] << endl;


}
}

2 个答案:

答案 0 :(得分:1)

C ++数组是随机访问容器。这意味着如果你想要数组的i元素,你可以要求它(并在恒定时间内得到它)。

用于数组元素访问的运算符是括号([])运算符。它需要一个std::size_t类型的参数,它是某个无符号整数类型的typedef,它足以索引计算机RAM的所有内存地址。因此,如果我有一个数组arr,并通过编写arr[2]将其编入索引,我就要求数组的第二个元素。

在下面的示例中,创建了一个数组,并为每个元素分配了一个等于其索引平方的值。

#include <cstdlib>
#include <iostream>

int main() {

    constexpr std::size_t length = 10;
    int arr[length];

    for (std::size_t i = 0; i < length; ++i) {
        arr[i] = i * i;
        std::cout << "Element " << i << " of arr is " << arr[i] << "." << std::endl;
    }

}

由于operator[]返回引用(在本例中为int&),因此表达式arr[i]可用于读取和写入值。

答案 1 :(得分:0)

我将在这里具体说明,你需要阅读c ++中的基本编程,因为你质疑c ++中for循环的基本方法。

我将从格式化代码开始,以便更容易阅读:

{ 
    int = myArray[5];
    for (int x = 0; x < 5; x++)
    {
        myArray[x] = 42;
        cout << x << ":" << myArray[x] << endl;
    }
}

让我指出代码中的一些错误。首先,当您在c ++中声明变量时,还必须声明其数据类型。以下示例如下:

var = 2;

无效,因为未指定变量 var 的数据类型。编译器无法通过查看c ++中传递给它的值来判断变量的数据类型。因此,我们需要在仅对DCLARING它时在变量名称之前添加数据类型。所以在上面的例子中:

int var = 2;

是一个有效的变量声明,因为我们已经指定此变量只存储一个int值。

现在您的代码中的问题是您正在尝试执行此操作:

    int = myArray[5];

这没有任何意义。第一个问题是您尝试为数据类型分配值,就好像它是变量一样。第二个问题是你以前从未申报过myArray。从你的鳕鱼,我假设你打算这样做:

    int myArray[5];

这是有道理的,因为你的for循环也运行了5次。在这一行中,您声明了一个名为myArray的数组,它存储了5个int类型的值。

现在转向for循环。让我们剖析for循环的头语句:

for (int x = 0; x < 5; x++)

开头分号int x = 0;之后的第一个语句只是为for循环的整个运行声明了一个变量ONCE。这个变量x是for循环的局部变量,不能在它外部访问。在c ++中,我们将它称为计数器变量,因为它存储了我们通过for循环循环的次数。

下一个语句x < 5;是for循环的条件。当这个条件成立时,for循环将运行;在你的情况下,当x小于5时,它将贯穿循环。一旦这种情况变得虚假;在此代码中,如果x变为等于或大于5,则条件被伪造,并且循环终止。这样,我们确保循环仅在我们的代码中运行我们想要它的次数。

最终语句x++;仅表示x在每个点都递增。如果它没有递增,那么x的值将永远不会改变,并且循环的条件永远不会被伪造,使其成为无限循环。因此,这种说法至关重要。

现在我们在for循环中,我们可以使用变量x。这对你的情况特别有用,因为你有一个数组,并且你正试图用值来填充它。而不是做数组[a] = n,其中范围从0到数组的大小减1,n是随机数,我们可以使用for循环来初始化我们的值。

在for循环中,我们如何做到这一点?我们使用计数器x,它在每次循环运行后递增,用作数组[a]中的“a”。这就是为什么我们使用myArray[x] = 42;,因为x在每个循环之后将自身增加1,并且这个数字可以用作数组的地址(对于我这里糟糕的选择而言)。为什么分配数字42是随机的;它可以分配任何数字。

如果您仍需要澄清,或者我在帖子中犯了错误,请在评论栏中告诉我。