我不明白这一点,它说的部分,“myArray [x] = 42;” 从什么时候x甚至进入myArray?至少有人向我解释这个剧本如何运作?使用循环变量作为C++数组的索引
{ int = myArray[5];
for (int x = 0; x < 5; x++) {
myArray[x] = 42;
cout << x << ":" << myArray[x] << endl;
}
}
我不明白这一点,它说的部分,“myArray [x] = 42;” 从什么时候x甚至进入myArray?至少有人向我解释这个剧本如何运作?使用循环变量作为C++数组的索引
{ int = myArray[5];
for (int x = 0; x < 5; x++) {
myArray[x] = 42;
cout << x << ":" << myArray[x] << endl;
}
}
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]
可用于读取和写入的值。
我将在这里具体说明,您需要阅读关于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 IT ONLY时,我们需要在变量名称前面添加数据类型。所以在上面的例子中:
int var = 2;
是一个有效的变量声明,因为我们已经指定这个变量只会存储一个int值。
现在在你的代码的问题是,你正在尝试做的:
int = myArray[5];
这是没有意义的。第一个问题是你试图为数据类型分配一个值,就像它是一个变量一样。第二个问题是你从未声明过myArray。从你的鳕鱼,我假设你打算这样做:
int myArray[5];
这是有道理的,因为你的for循环也运行5次。在这一行中,你已经声明了一个名为myArray的数组,它存储了5个int类型的值。
现在继续前进for-loop。让我们解剖的头声明for循环:
for (int x = 0; x < 5; x++)
第一条语句开分号int x = 0;
之后简单地声明一个变量,一旦for循环的整个运行。这个变量x是for循环的局部变量,不能在其外部访问。在C++中,我们将它称为计数器变量,因为它存储了我们通过for循环循环的次数。
下一条语句x < 5;
是for循环的条件。当这个条件成立时,for循环会运行;在你的情况下,当x小于5时,它将通过循环运行。一旦这种情况变得虚假,在此代码中,如果x等于或大于5,则条件被伪造,并且循环终止。这样,我们确保循环遍历我们的代码,只有我们想要的次数。
最后一条语句x++;
只是表示x在每一点都递增。如果它没有增加,那么x的值将永远不会改变,并且循环的条件永远不会被伪造,从而使其成为一个无限循环。因此,这一说法至关重要。
现在,当我们在for循环中时,我们可以使用变量x。这对你的情况特别有用,因为你有一个数组,并且你正试图用值填充它。我们可以使用for循环来初始化我们的值,而不是使用array [a] = n,其中a的范围从0直到数组的大小减去1,并且n是一个随机数。
在for循环中,我们该怎么做?我们使用计数器x,它在每次循环运行后自行增加,作为数组[a]中的“a”。这就是为什么我们使用myArray[x] = 42;
,只是因为x在每个循环后自增1,并且该数字可以用作阵列的地址(对于我在这里糟糕的词的选择抱歉)。为什么它分配数字42是随机的;它可以分配任何数字。
如果您仍然需要一些说明,或者如果我在我的帖子中犯了错误,请在评论框中告诉我。
这是[The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – 2017-02-10 02:06:11
我不需要一本书,我只需要看看“myArray [x]”是如何工作的?我只是不明白这个确切的部分。 – Akuhyo
那么你的代码不能编译,所以我想你可能需要一个教程。 – CollinD