为什么在迭代中迭代时,为什么我不会出现限制阵列错误

Why am I NOT getting an out of bound array error when iterating through it?

本文关键字:迭代 为什么 阵列 错误      更新时间:2023-10-16

,所以我设置了一个简单的数组,并通过它迭代。对于每个元素,数组[i]的值为100。我do<4因为五个元素的数组显然不存在数组[5]。

如果数组索引在0时,为什么编译器不吓到我?数组[5]不应该存在...

using namespace std;
int main()
{
    int array[5];
    for (int i = 0; i < 5; i++)
    {
        array[i] = 100;
    }
    for (int i = 0; i < 5; i++)
    {
        cout << array[i] << "n";
    }
}

如果 i < 5,则必须是 4或更小,这意味着最大值是 array[4],它不超出界限。

我认为您一定已经将其与i <= 5相混淆了,您还看到了很多。

int array[5];
for (int i = 0; i < 5; i++)
{
    array[i] = 100;
}

或多或少等同于

int array[5];
array[0] = 100;
array[1] = 100;
array[2] = 100;
array[3] = 100;
array[4] = 100;

因此,该代码中没有界限。

您永远不会访问[5]。您对a [0],a [1],a [2],a [3],a [4]的迭代都不会犯任何错误。5。

声明 int array[5];时,5不参考任何索引..它是指元素数。但是只有在这一点上...当您声明它时。稍后,您可以通过索引0-4访问数组,因为您有i < 5

即使您要访问array[5],也无法保证您的编译器会吓坏...但这可能是另一个话题,还是?