C++一维数组的越界问题
前言
就目前我刚学完c++编程教学教学的第四章——数组,今天琢磨了一维数组的越界问题。
一、即使对于初学者这也是非常简单的一维数组的输入和输出,只不过我如下操作:
1、不是初始化数组,而是构造for语句循环输入和输出数组的值
2、定义的数组申请的空间为4,而我输入7个数据,也就是越界输入数据,在部分编译器中这种方法越界输入在编译过程中不会报错和警告,那么我越界输入的值在输出后有什么变化吗。
#include<iostream>
using namespace std;
int main(){
int a[4];
for(int i=0;i<7;i++){
cout<<"请输入数据:"<<'\t';
cin>>a[i];}
cout<<'\n';
cout<<"输入的数据为下列数:"<<endl;
for(int i=0;i<7;i++)
cout<<a[i]<<'\t';
int p;
cin>>p;
if(p=46)cout<<"修改等待"<<endl;
if(p=54)cout<<"结束"<<endl;
return 0;
}
’
二、如程序,通过做多组实验可以发现一下规律:
1、 我们越界输入的值部分会正常输出,而部分数据会减一再输出,而部分会不输出。这不失为DEVc++编译器的一个规律。
2、可以在后期我会采用codeblock和VC++再尝试实验,再附上结果。
‘
三、总结:
我在创建数组时通常会为其申请存储空间,当我们输入的数据小于或等于所申请的空间大小时,不会出现如何问题。而越界时我们输入的越界部分数据会占用我们未申请空间的存储,所以会产生数据的模糊和偏差,在小程序中不会有太大的影响,而在大型程序中,可能会因为你越界部分的数据占用了其他部分程序的存储空间导致严重后果。