为什么在迭代中迭代时,为什么我不会出现限制阵列错误
Why am I NOT getting an out of bound array error when iterating through it?
,所以我设置了一个简单的数组,并通过它迭代。对于每个元素,数组[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]
,也无法保证您的编译器会吓坏...但这可能是另一个话题,还是?
相关文章:
- 为什么output_editor Concept不需要output_e迭代器标记
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 为什么 C++ std::unordered_map 从 emplace/ 找到返回一个迭代器?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- 为什么以及如何C++更改旧迭代器的值
- 为什么此代码的矢量迭代器没有停止?
- 为什么我的 scanf() 没有在我的数组上迭代我的 for 循环?
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?
- 了解运算符重载和迭代器,为什么它会打印出"wrhrwwr"?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 为什么"i"在循环的每次迭代中都没有增加?(C++)
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- 为什么范围算法与 std 的迭代器不兼容?
- 为什么在这个C++问题中使用const_iterator而不仅仅是迭代器?
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 为什么我们不在 STL 的迭代器中传递星号(*)
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- 为什么"std::uninitialized_copy"通常取消对未初始化内存的迭代器的引用不是未定