1樓:小夏在深圳
static int a = 0; // 執行期時初始化一次, 下次再呼叫時, 不進行初始化工作如下:
printf(“%d”,a);
a++;
int main()
staticlocalvar(); // 第一次呼叫, 輸出a=0
staticlocalvar(); // 第二次呼叫, 記憶了第一次退出時的值, 輸出a=1
return 0;
擴充套件資料
1、static對全域性變數的修飾,可以認為是限制了只能是本檔案引用此變數。有的程式是由好多.c檔案構成。
彼此可以互相引用變數,但加入static修飾之後,只能被本檔案中函式引用此變數。
2、static對棧變數的修飾,可以認為棧變數的生命週期延長到程式執行結束時。一般來說,棧變數的生命週期由os管理,在退棧的過程中,棧變數的生命也就結束。
3、但加入static修飾之後,變數已經不再儲存在棧中,而是和全域性變數一起儲存。同時,離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。
2樓:風清安有綢
如果是賦值初始值,那麼在程式執行初始就已經初始化了。
和全域性變數是一樣的。
但體現出來作用是在第一次呼叫。
至於後續賦值,隨便什麼時候都可以
想賦值的時候就賦值咯。
3樓:匿名使用者
呵呵,這就是靜態變數的功能啊,靜態變數只被初始化1次,所以不管幾次呼叫,它都不會再執行int c=3這行啦。而c的值就是你之前運算的結果
4樓:小魚
static定義的變數只有第一次被賦值,這之後會自然使用之前留下來的值了,不會每次都按3初始化的。:-)
5樓:匿名使用者
static變數與普通變數的區別就在於此
每次呼叫fun()函式,
函式開始時,初始化普通變數、分配記憶體,函式結束後,普通變數所佔用的記憶體就被釋放
而對於static變數,只是第一次呼叫時會初始化,函式體結束之後,static變數佔用的記憶體會被保留,從而變數的值不會發生變化,下次呼叫該函式,也不會重新初始化,而是保留上次的值
C語言賦值語句,C語言中賦值語句有什麼規則要求?
選ab中取模右邊不是整數 c中賦值號左側不是一個變數 d中第二個賦值號左側不是一個變數 吉祥二進位制 c語言中通過 運算子來實現賦值,有時候也用它來進行初始化,在c語言中初始化和賦值是完全兩個不同的概念。比如下面的 int a 10 這是初始化a 0 10 這是賦值 初始化是一個順序點,編譯器保證每...
c語言中賦值語句的語法是怎樣的,C語言中賦值語句的語法是怎樣的
小夏在深圳 賦值的語法規則就是 資料型別 變數名 表示式 表示式可以理解為一個值或一個計算公式就行,表示式加一個英文符號分號就是語句。例如 我們今天要用到的,我買了幾斤蘋果。就可以這樣寫 方式一 方式二 擴充套件資料1 c語言中,賦值運算的操作是有方向的,即將右側表示式的值 也稱為右值 賦值左側的變...
C語言中有哪些儲存型別,C語言中變數的儲存型別有哪幾種,儲存方式哪幾種?謝嘍
千鋒教育 c語言中的儲存型別有auto,extern,register,static 這四種,儲存型別說明了該變數要在程序的哪一個段中分配記憶體空間,可以為變數分配記憶體儲存空間的有資料區 bbs區 棧區 堆區。1.auto儲存型別 auto只能用來標識區域性變數的儲存型別,對於區域性變數,auto...