题目:
VS开发环境调试下面的代码,解释下面代码的问题
#include <stdio.h>
int main()
{
int i = 0;
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<=12; i++)
{
arr[i] = 0;
printf("wei,zaima\n");
}
return 0;
}
调试截图:
分析:
原因:数组越位访问。
数组初始化时含10个元素,而循环条件i<=12使得对数组元素操作的范围超出数组本身的范围。在VS编译器下,这里的“第12个元素”的地址正好是循环控制变量i的地址,每当访问到“第12个元素”时i就被当作数组元素赋值为0,进而导致i永远不会大于12,循环条件永远为真,程序死循环。