for(i = 0; i < 4; ++i)
{
int x;
}
对于上面代码,x的生存周期是一次循环还是整个循环呢?
我们通过打印发现x的地址在每次循环中地址不变,所以x的生存周期是在整个for循环,为了进一步验证,我们使用gdb追踪一下
修改代码如下:
for(i = 0; i < 4; ++i)
{
int x =0;
x++;
}
通过gdb追踪发现
x的生存范围仅在一对大括号之内,在for(i = 0; i< 4; ++i)中是不可见的,同时在每次进入左大括号时(未执行int x = 0;之前)我们可以查看到x的值为1,这
充分证明了x的作用域是在整个循环体之内的