别越界
约 10 分钟
一排 5 个储物柜编号 0 到 4,你却去开第 5 号——那儿根本没柜子,这就叫越界。麻烦的是程序常常不报错,但你读到的是隔壁的垃圾数据,写进去还可能弄坏别的东西。
#include <iostream>
using namespace std;
int main() {
int a[5] = {1, 2, 3, 4, 5};
cout << a[4] << endl; // 合法,最后一个
// cout << a[5]; // 越界!千万别这么写
return 0;
}
越界最可怕的地方就是"不报错":这次运气好没事,换台电脑或换组数据就崩,事后极难查。所以下标一定盯紧在 0 到 n-1 之间。
小纸条
为什么"不报错"反而更危险?
登录 后可看答案