靜態變數static(C)

2021-09-04 04:37:02 字數 1019 閱讀 2931

static是c語言關鍵字之一。

static 資料型別用來給變數建立永久儲存空間。靜態變數在函式間呼叫時保持他們的值不變。

它的語法結構為:

static c_type data_name;

其中,c_type 為基礎的資料型別,data_name是變數名。

生存期的概念是在程式執行過程中體現的。程式開始執行後,對所需要的變數申請空間,直至這個變數被銷毀。這段時間便是乙個變數的生存期。

由於靜態變數static在第一次被呼叫時被建立,當主函式被銷毀時才會被銷毀。那麼的話,其生存期便會遠遠的超過建立它的那個函式。這樣就達到了對其延壽的作用。

void fun(int x)

int main()

system("pause");

return 0;

}

由於a是靜態變數,所以當第一次開闢空間時被賦予了10。那麼它在fun函式銷毀時並不會被銷毀,並且在fun函式被再次呼叫時不會被建立。所以本程式的輸出結果如下所示。

由圖可見,靜態變數可以自加。

可見性指的是在編譯過程中對於乙個變數來說,可以被使用的能力。靜態變數的可見性如同普通變數,向下可見。

a = 10;

static int a;

輸入以上程式,編譯器會提醒你未定義識別符號a。

當函式被呼叫的時候,會在棧區申請一段記憶體,來存放函式內的變數。當函式呼叫結束時,這段記憶體便會被釋放。而靜態變數static申請的記憶體不在棧區。而在資料區。當函式被銷毀時,它不會隨著函式的銷毀而釋放,從而實現了其生存期超過了函式本身的功能。

當靜態變數static被建立時,在資料區為其分配了一段空間,並且分配了乙個標誌符,設為1。當經過第一次賦值之後,該標誌符被設為0。再次宣告該變數時,由於其已經存在並且標誌位為0,因此系統不會將其宣告值賦給該變數(原文為:從而限制了之後對其的賦值)。

靜態變數和非靜態變數

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 不用建...