【发布时间】:2018-04-20 14:39:42
【问题描述】:
我分配了一个包含 3 个元素的 int 数组,并想到了下面的代码:
int a[3];
for(int i = -2; i < 3; ++i){
a[i] = i;
cout<<a[i]<<" ";
}
这是它的输出:
-2 -1 0 1 2
似乎数组 a 有 5 个分配空间,而 a 位于这些空间的中间。 有什么想法吗?
【问题讨论】:
-
C++ 没有数组边界检查。在任一方向上越界索引都会导致undefined behavior。
-
@SerkanPekçetin 提出的问题没有具体提到负索引,但原理几乎完全相同。