C語言 static靜態變量的做用
static
- 靜態變量經過關鍵字 static 進行聲明,該變量存儲在數據段上,也就是內存上,能夠改變變量的做用域和生命週期。
- 對於局部變量做用域依舊沒有改變,只有定義該局部變量的函數和複合語句能夠引用,可是其生命週期變成了直到整個源程序文件結束。
- 對於全局變量生命週期沒有發生變化,可是其做用域反而有所減少,只有本文件的函數能夠引用該全局變量。
- 針對static的特性,只有本文件內的函數能夠引用該變量,在C語言中一個源程序文件就是一個模塊,一個源程序文件(模塊)聲明瞭一個static全局變量以後其餘模塊只能經過該模塊提供的接口函數來訪問這個static變量,而不能直接實現對其進行操做,也就是說static能夠實現一個模塊的封裝。
範例:
創建一個鏈表文件公司工資文件,tax.c:html
- #include<stdio.h>
-
- static int base = 10000;
-
- int chicken_legs(float i){
- return (1 + i)*base;
- }
創建一個向外界提供一個接口函數聲明,tax.h:ide
- extern int chicken_legs(float i);
如其餘源文件user.c須要引用該文件,使用接口文件:函數
- #include<stdio.h>
- #include"tax.h"
-
- int main(void){
- int wage;
- float increase;
- wage = chicken_legs(increase);
- return 0;
- }
user.c這個文件就不能修改tax.c中的用static聲明的 base,而只能引用接口函數,static 關鍵字使文件中的全局變量的範圍侷限於該文件中,從而起到一個封裝文件的做用spa