数组越界问题是我们编程过程中一个不可忽视的问题,造成数组越界的原因如下所示:
#include<stdio.h>
int main()
{
int i;
int arr[10];//error
for(i=0;i<=10;i++)
{
arr[i]=0;
printf("%d\n",i);
}
return 0;
}
该程序的运行结果如下:
下图为数组在栈中的存放方式,栈的存放遵循后进先出的原则,因此越靠近栈底的地址越大,数组总共有下标为0~9的十个数 没有下标为10的数字,编译器默认9后面的空间为10,因此错将i原本的值也改成0,造成数组越界,