c 迴圈語句中變數的生存週期

2021-08-08 08:48:55 字數 849 閱讀 4987

1、本人突發奇想,突然想到c++迴圈體中變數的生命週期。

從形式上看,迴圈體中定義的變數總是存在作用域(花括號{}中),那麼變數在迴圈

未結束前是否一致存在呢?在vs2013下測試得到的結果是否定的。

例,

class base

~base()

base(const base &b)

};base bs;

for (int i = 0; i < 3; ++i)

上述**的輸出結果為:

base() //bs物件建立

i = 0

base(const base &b)

~base()

i = 1

base(const base &b)

~base()

i = 2

base(const base &b)

~base()

~base()//bs物件銷毀

從例子中的輸出結果來看,迴圈體中的base b = bs;在每次迴圈中,均建立乙個變數,並在該次迴圈

結束後銷毀。即,相當於每次迴圈都具備乙個迴圈體的作用域,變數在迴圈體中建立與銷毀。

另外,while,do-while迴圈體與for的迴圈體一致。

2、for語句中的初始狀態處定義的變數建立一次並在迴圈語句結束後銷毀。

例,

int ii = 0;

for (base bb;ii < 3;++ii)

輸出結果:

base()

ii = 0

ii = 1

ii = 2

~base()

C 變數生存週期演示

能正確寫出下面 的輸出內容嗎?正確的輸出資訊是 d 全域性對像d初始化 a 函式內區域性對像a初始化 b 函式內區域性對像b初始化 b 函式內區域性對像b刪除.以前一直以為給一條 無故加對花括號是無聊的,或者編譯器會把它乾掉,無聊嗎?c 函式內靜態對像c初始化.注意區域性靜態變數雖然生存週期是整個程...

C 類的生存週期

眾所周知,類是c 的核心,而對於類的生存週期的長短是受到很多因素影響,在這裡我從以下幾個方面來分析 類在.data段生成時的生存週期 類在棧區生成時的生存週期 類在堆區生成時的生存週期 為了體現各種情況下類的生存週期,我們寫乙個測試用例來直觀地感受。class cgoods 實現三種構造方式 乙個拷...

mysql sql語句中變數的使用

有乙個表,其中一列是城市 city 一列是人的姓名 personname 怎麼獲取每個城市中任意兩個人?ddl如下 table structure for myperson drop table ifexists myperson create table myperson id int 11 no...