数组是常用的存储结构,适用范围广,但在使用时经常会出现诸多问题,而在这些问题里最麻烦的问题便是数组越界问题,所以今天我们来看看 1.数组的存储方式;2.数组越界问题的定义;3.数组越界问题为什么最麻烦;4.我们应该怎么规避预防越界问题;

  1. 数组的存储问题:

[1] 局部变量:定义在函数体内部的变量,内存区域在栈里。
[2]栈:栈是一种特殊的存储方式,遵循先进后出原则,就像一个缸一 样,下端称为栈底,存放大地址;上端称为栈顶,存放小地址。
[3]变量存储规则:先定义的地址大,放在栈底。在给数组分配空间时是一次性给一大块,数组里的地址大小为a[0]<a[1],因为每次都有个i++,所以地址在增大,前面的放在栈顶,最后的放在下面(地址大)。
e.g:

int main()
{
int i;//先定义,放在栈底
int arr[10];//元素地址逐渐增加

python 避免数组越界 请问如何防止数组越界_数组

  1. 数组越界的定义:
    你给数组只定义了十个长度,从a[0]~a[9],但你想给a[10]赋值,计算机找不到这个空间,若有变量在a[9]下面,则给a[10]的值便会覆盖掉i。这便称为越界问题。
for(i=0;i<=10;i++)//数组中并没有a[10],所以a[10]=0,不存在的
{
arr[i]=0;         //i在a[9]下面,故让i=0了,所以i<10,i++,会陷入无限循环中
printf("%d",i);
}

python 避免数组越界 请问如何防止数组越界_i++_02


3. 数组问题为什么麻烦呢?

其一,出现这种问题程序会出现死循环,程序员根本无从下手,因为它没有报错,2012编译器则会出现崩溃,还好一点。

其二,项目多人合作完成,若上一个的代码中有越界问题,会严重影响下一段代码。

  1. 怎么规避预防越界问题?
    其实2012编译器已经给出了办法,那就是在数组和其他变量中间放几个炸弹,若越界则程序崩溃。这样就可以阻止它无限循环和改变位于数组下面的变量的值。

    一定要谨记数组不能越界,不然会有大麻烦的。