C++中的数组下标越界问题没有报错
发布时间
阅读量:
阅读量
C++中数组下标越界程序并不报错是因为编译器不会对数组下标作越界检查造成的。
C语言在设计时特别强调程序执行效率,因此并未内置数组越界检测机制,而C++作为C语言的继承者,同样延续了对运行效率的重视,因而也未引入数组越界检查功能。(若要实现数据越界的检测,编译器需要在生成的目标代码中插入额外的检测逻辑,用以在程序运行过程中验证下标是否超出范围,这种操作将不可避免地影响程序的执行速度)接下来,我们先观察一段示例代码:
int a[2];//定义一个长度为2的int数组
a[0] = 1;
a[1] = 2;
a[2] = 4;//越界
for (int i = 0; i < 3; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for (int i = 0; i < 3; i++)
{
cout<<&a[i]<<" ";
}
运算结果:

还没有任何评论哟~
