靜態變數(static variable)
我們可以建立具有 塊作用域、無鏈結、靜態儲存期 的區域性靜態變數。其與區域性自動變數一樣,具有相同的作用域,但是程式在離開它們所在函式後,靜態變數不會消失,在多次函式呼叫之間會記錄它們的值。
#include
void
trystat
(void);
intmain()
return0;
}void
trystat
(void
)
該程式的輸出如下:
here comes iteration 1
:fade =
1and stay =
1here comes iteration 2
:fade =
1and stay =
2here comes iteration 3
:fade =
1and stay =
3
靜態變數 stay 儲存了它被遞增1後的值,但是 fade 變數每次都是1。這表明了初始化的不同:每次呼叫 trystat() 都會初始化 fade ,但是 stay 只在編譯 trystat() 時被初始化一次。如果未顯式初始化靜態變數,它會被初始化為 0。
不能在函式的形參中使用 static :
int
wontwork
(static
int flu)
;// 不允許
tip逐步除錯時,程式之所以會跳過第19行的宣告: 「static int stay = 1; 」,是因為靜態變數和外部變數在程式被載入記憶體時已載入完畢。把這條宣告放在 trystat(void) 函式中是為了告訴編譯器只有 trystat(void) 函式才能看到該靜態變數。這條宣告並未在執行時執行。
靜態變數和非靜態變數
class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...
變數 靜態變數
變數 全域性變數 外部變數 在函式外部定義,以及被本程式所有物件或函式引用。區域性變數 內部變數 由某個函式或物件建立,只能被內部引用,而無法被其他物件或函式引用。特點 該變數在全域性資料區分配記憶體 未經初始化的靜態全域性變數會被程式自動初始化為0 在函式體內宣告的自動變數的值是隨機的,除非它被顯...
靜態變數,非靜態變數和final變數
package com.founder.bg.quartz.job 7 在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,8 其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某 9 個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,10 不用建...