#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun()
{
int i,a[10];
printf("%x\n", &i);
for(i = 0; i <= 10; i++)
{
printf("%x\n", &a[i]);
a[i] = 0;
}
}
int main(int argc, const char *argv[])
{
fun();
return 0;
}
此段程序会进入死循环
在函数fun的栈中
低地址 高地址
a[0] a[1] a[2] ..... i
-->循环到最后 又把i变成0了,进入无限循环
详解:
http://blog.sina.com.cn/s/blog_54f82cc201013jdh.html
C语言死循环解析
本文分析了一段使用C语言编写的程序中存在的死循环问题。该程序通过指针打印数组地址并初始化数组元素,在循环过程中因边界条件设置不当导致无限循环。文章详细解释了循环变量在栈帧中的位置及如何避免此类错误。

被折叠的 条评论
为什么被折叠?



