在阅读本章前,你需要具备vs基本调试能力,且本次调试只适用于vs编译器debug(×86)
在监视内输入需要观察的值
内存地址输入arr(数组名称就是地址)
在运行完9次,将arr中所有已赋值的数全部改为0后会出现上面情况,并且在运行过程中我们发现arr[12]的地址是与i的地址一样,arr[12]的值也与i的值一致。
即使我们后面继续运行,i与arr[12]的值依旧保持一致。
这是为什么呢?
我们要明白栈区的创建是先从高地址到低地址的,所以i的地址要高于数组arr,而数组内存的存放是随着下标的增长,从低地址到高地址的
如此,i的地址和数组arr[12]的地址重合了。
而i和arr数组之间有2个整形空间是编译器的巧合,在不同编译器下空出的空间是不同的,和题目环境有关。
但当我们继续运行的时候i和arr[12]的值变成了0!
一直在0~12死循环。
这是因为在循环12之后,循环内把arr[12]赋值为0,正因为i的地址与arr[12]一致,所以i也被赋值为0,所以死循环成立。