auto變量在for循環中的生存週期

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的作用域是在整個循環體之內的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章