函式1
int fun()
當fun函式被呼叫時,i會一直++
函式2
int fun()
當函式被呼叫時只會return 1;
因為:
1、這兩個變數i同名但是不同意義
靜態變數:作用在全域性,生命週期和程式一樣,i在記憶體開闢的空間不會隨著函式呼叫而被銷毀;每次呼叫都會找到之前的i,所以一直++。
變數i:作用在區域性,生命週期和函式一樣,i在記憶體開闢的空間會隨著函式被呼叫而被銷毀;每次呼叫,i在重新分配的棧幀中再次分配空間,並賦初值為0;所以只會返回1。
靜態變數的必須初始化,如果沒有顯示初始化,則系統自動初始化為0 ,』0』或者其他。當變數重複時,編譯器忽略了重複初始化的**。
根本原因:
靜態變數在全域性開闢的空間 i ,在其空間上方有乙個標誌域–0。程式執行時檢查標誌域,若為0,則賦值;反之,則不執行。
靜態變數初始化順序
1.begin a a a a,from a的物件 a a,a.num01 0 a a,b.num02 0 a a,b.instance a null end a a begin a a a a,from a的物件 a a,a.num01 1 a a,b.num02 1 a a,b.instance...
final非靜態變數初始化
size medium final變數可以在任何可以被始化的地方被始化,具體應該是建構函式之前或建構函式中,但只能被初始化一次.一旦被初始化後就不能再次賦 值 重新指向其它物件 作為成員變數一定要顯式初始化,而作為臨時變數則可以只定義不初始化 當然也不能引用 即使是作為乙個類中的成員變數,也還可以在...
變數只能在定義時被初始化
在這種情況下,計算機會將一些閒置的記憶體,它將把價值居住在該記憶體位置的法庭,它將列印值。但它會列印什麼價值?答案是 誰知道!每次執行該程式時,答案都會改變。當作者冉本程式用visual studio 2013編譯,std cout印製價值7177728一次,和5277592下。如果你想自己執行這個...