程序堆栈问题吧,先把i入栈,然后就是num数组的空间,因为是栈的缘故,num的地址要低于i的地址,也就是i的地址就在num的地址后面,访问num[10]的时候实际上就是访问的i,然后程序中num[10]=0,就使i变为0 了,,然后i=0,就满足了循环条件i<=10,然后继续运行,就造成了一个死循环...如果把代码改成:
int num[10];
int i;
for(i=1;i<=10;i++)
{num = 0;
printf("%d:%d\n",i,num);
}
printf("loop end.");
应该就可以执行printf了,
呵呵,我开始也没想到,i怎么会变成0 的... |