日期:2014-05-20  浏览次数:20814 次

for循环中局部变量分配内存问题
for(;;)
{
  int a=1;

}
像这种循环假如循环10次,a被赋值十次,第一次赋值和后面的几次赋值为什么不产生重复变量的错误?
第一次循环后,难道a就失效了?????

------解决方案--------------------
局部变量的生命周期只在{}范围内有效。

那么换个思路来理解的话:
for( 语句1; 语句2; 语句3)
{
int a=1;
}

你知道循环执行顺序是:
 语句1 -> 语句2 -> {} -> 语句3 -> 语句2 -> {} -> 语句3 -> 语句2 -> {} -> 语句3 -> 语句2

所以int a=1; 在 {} 之后,进入语句3的时候,就已经消失了。