首先,C语言分为静区、桟区、静态区,局部变量存放子内存中的桟区的
桟区使用:先使用高地址处空间,再使用低地址处空间
数组随下标的增长,地址是由低到高变化的
分析:i和arr为不同的两个局部变量,在桟上开辟了两段空间。根据桟使用的原则,所以i在高地址,arr在低地址。而数组内部,先使用低地址,再使用高地址。for循环中,数组越界。所以,循环最后一次改变了i的地址的值,i的值变成了0,故循环一直进行,成为死循环。
下面代码中i和arr数组中间一定是2个整形吗?
答案:NO,因为
i<=10 --VC6.0 --i和arr之间没有多余的空间
I<=11 --gcc --i和arr之间有一个整型空间
代码如下:
运行截图: