2017-02-10 127 views
0

我不明白这一点,它说的部分,“myArray [x] = 42;” 从什么时候x甚至进入myArray?至少有人向我解释这个剧本如何运作?使用循环变量作为C++数组的索引

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

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


} 
} 
+3

这是[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

+0

我不需要一本书,我只需要看看“myArray [x]”是如何工作的?我只是不明白这个确切的部分。 – Akuhyo

+1

那么你的代码不能编译,所以我想你可能需要一个教程。 – CollinD

回答

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]可用于读取和写入的值。

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 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是随机的;它可以分配任何数字。

如果您仍然需要一些说明,或者如果我在我的帖子中犯了错误,请在评论框中告诉我。