编译器不会检查数组的下标,因此使用数组可以越界(且不会有语法错误)
越界后果:
1、一切正常
2、脏数据
int arr[10];
for(int i = 0; i <= 10; i++)
{
arr[i] = 0;
printf("--------%d\n",i);
}
运行结果: 0~9无限循环
原因:
定义时给定空间:[0][1][2][3][4][5][6][7][8][9] i
-> [10]的存在占用了i所在的空间
-> arr[10] = 0 = i
-> 将i又赋值为0,导致死循环
3、段错误(核心已转储)