C語言 static靜態變量的作用

c語言的變量種類
- 靜態變量通過關鍵字 static 進行聲明,該變量存儲在數據段上,也就是內存上,可以改變變量的作用域和生命周期。
- 對於局部變量作用域依舊沒有改變,只有定義該局部變量的函數和復合語句可以引用,但是其生命周期變成了直到整個源程序文件結束。
- 對於全局變量生命周期沒有發生變化,但是其作用域反而有所減小,只有本文件的函數可以引用該全局變量。
- 針對static的特性,只有本文件內的函數可以引用該變量,在C語言中一個源程序文件就是一個模塊,一個源程序文件(模塊)聲明了一個static全局變量之后其他模塊只能通過該模塊提供的接口函數來訪問這個static變量,而不能直接實現對其進行操作,也就是說static可以實現一個模塊的封裝。
范例:
建立一個鏈表文件公司工資文件,tax.c:
-
- static int base = 10000; //基本的工資基數
-
- int chicken_legs(float i){
- return (1 + i)*base;
- }
建立一個向外界提供一個接口函數聲明,tax.h:
- extern int chicken_legs(float i);
如其他源文件user.c需要引用該文件,使用接口文件:
-
- int main(void){
- int wage;
- float increase;
- wage = chicken_legs(increase);
- return 0;
- }
user.c這個文件就不能修改tax.c中的用static聲明的 base,而只能引用接口函數,static 關鍵字使文件中的全局變量的范圍局限於該文件中,從而起到一個封裝文件的作用