数组越界

1.局部变量的定义
答:局部变量是定义在函数体中的变量,内存区域在栈里,数据先进后出,地址下面大上面小。
2.输入一段代码:
#include<stdio.h>
int main()
{
int i;
int arr[10];
for(i=0;i<=10;i++)
{
arr[i]=0;
printf("%d",i);
}
return 0;
}
它们在栈中的存储位置如图所示(栈在给数组分配空间时,直接给4*10=40个字节,然后数组自己排序)
3.分析程序崩溃原因:
当i=10时,10<=10
所以a[10]=0,但并无a[10],而i在9下面
所以i=0,又因为i=0<=10,所以i++,所以一直死循环,运行结果是死循环或者崩溃。
4.如何解决:
可以加入两个值作为“炸弹”来隔开,若值给了这个“炸弹”,则终止,程序报错。
但如果想无限循环也可以if(i=10)
{
i=12;
}
则跳过了炸弹。数组越界