---------------statr reading---------------
引言
数组在C语言中占据重要位置,但由于数组具有下标从“0”开始的特性,常常会出现数组下标越界越界的情况,今天我们就来谈谈数组越界的后果,简易分析数组越界出现奇怪现象的原因。
请看以下代码
#include<stdio.h>
void Count()
{
int i;
int arr[3];
for(i=0;i<3;i++)
{
arr[i]=0;
printf(" %d\n",i);
}
}
int main()
{
Count();
return 0;
}
输出结果为:
但当循环条件改变为i<=3,arr[3]数组越界,则会出现问题
for(i=0;i<=3;i++)
{
arr[i]=0;
printf(" %d\n",i);
}
visual 2012中会显示程序崩溃,而在c99中则会出现012012012012……的无限死循环。这是为什么呢?下面就来为各位揭开数组越界的面纱!
变量,数组变量在编译器中以栈的形式存放,如图:
变量按先后顺序依次存入栈中先存入的在栈底,地址大,后存入的靠近栈顶,地址小