C語言中static變數使用方法

2022-03-02 09:48:56 字數 1835 閱讀 9155

1. static 變數

靜態變數的型別說明符是static。 靜態變數當然是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數。 例如外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

2. 靜態區域性變數

靜態區域性變數屬於靜態儲存方式,它具有以下特點:

(1)靜態區域性變數在函式內定義它的生存期為整個源程式,但是其作用域仍與自動變數相同,只能在定義該變數的函式內使用該變數。退出該函式後, 儘管該變數還繼續存在,但不能使用它。

(2)允許對構造類靜態區域性量賦初值例如陣列,若未賦以初值,則由系統自動賦以0值。

(3)對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。 根據靜態區域性變數的特點, 可以看出它是一種生存期為整個源程式的量。

雖然離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。 因此,當多次呼叫乙個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的***,因此仍以採用區域性靜態變數為宜。

3.靜態全域性變數

全域性變數(外部變數)的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。 這兩者在儲存方式上並無不同。

這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式, 當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。 而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性變數的作用域侷限於乙個原始檔內,只能為該原始檔內的函式公用, 因此可以避免在其它原始檔中引起錯誤。

從以上分析可以看出, 把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生存期。把全域性變數改變為靜態變數後是改變了它的作用域, 限制了它的使用範圍。因此static 這個說明符在不同的地方所起的作用是不同的。

4. static 函式…..

內部函式和外部函式

當乙個源程式由多個原始檔組成時,c語言根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。

1 內部函式(又稱靜態函式)

如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。

定義乙個內部函式,只需在函式型別前再加乙個「static」關鍵字即可,如下所示:

static 函式型別函式名(函式引數表)

關鍵字「static」,譯成中文就是「靜態的」,所以內部函式又稱靜態函式。但此處「static」的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。

使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。

2 外部函式

外部函式的定義:在定義函式時,如果沒有加關鍵字「static」,或冠以關鍵字「extern」,表示此函式是外部函式:

[extern] 函式型別函式名(函式引數表)

呼叫外部函式時,需要對其進行說明:

[extern] 函式型別函式名(引數型別表)[,函式名2(引數型別表2)……];

案例]外部函式應用。

(1)檔案

main()

(2)檔案

……extern void input(……) /*定義外部函式*/

(3)檔案

……extern void process(……) /*定義外部函式*/

(4)檔案

……extern void output(……) /*定義外部函式*/

**:考試大-計算機二級考試

C語言中static變數使用方法

1.static 變數 靜態變數的型別說明符是static。靜態變數當然是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數。例如外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。2.靜態區域性變數 靜態區域性變數屬於靜...

關於C語言中的變數

include void f5 int static int e void f4 int a void main void f4 int int e void f5 int b 首先,main函式中以10為引數呼叫函式f5,在函式f5中,給變數e賦值為5,接下來呼叫函式f4,引數b的值為10,在函式...

C語言變數儲存型別

1.儲存型別和資料型別。儲存型別是針對變數而言的,它規定了變數的儲存位置,從而也確認了其作用域和生存期 資料型別也可以針對變數,它規定了變數所佔記憶體空間的大小。中只有兩種儲存型別 自動類和靜態類。全域性變數只能是靜態類,而區域性變數可以任意。3.說明變數儲存型別的格式 儲存型別 資料型別 變數名錶...