我正在使用这个简单的程序。
#include<iostream>
using namespace std;
int main(){
int arr[200]={0};
int i = 200;
arr[i] = 1;
cout << i << endl;
}
我希望结果是200;在我的系统中,它的显示结果为1。 任何人都可以解释这种异常行为。
答案 0 :(得分:5)
您分配了一个包含200个元素的数组,它为您提供索引0到199.您将索引200处的项设置为1,这超出了数组的范围。 C ++很高兴让你踩到你想要的任何内存。您在i
之后立即声明arr
,因此它在内存中arr
之后立即在堆栈上分配,因此当您越过数组末尾时将其设置为1元件。
您可以在i
之前声明arr
进行验证,看看会发生什么。或者将i
设置为199,这可能就是您的意图。