1、修飾區域性變數
static修飾區域性變數,該區域性變數便存放在靜態資料區,其生命週期一直持續到整個程式執行結束,但作用域仍限於該語句塊。
特別注意的是,用static修飾區域性變數後,該變數只在初次執行時進行初始化工作,且只進行一次。
#includevoid fun()
int main(void)
程式執行結果為: 2 3
對於靜態區域性變數如果沒有進行初始化的話,對於整形變數系統會自動對其賦值為0,對於字元陣列,會自動賦值為'\0'.
2、修飾全域性變數
對於乙個全域性變數,它既可以在本原始檔中被訪問到,也可以在同乙個工程的其它原始檔中被訪問(只需用extern進行宣告即可)。
如:
//有file1.c
int a=1;
file2.c
#includeextern int a;
int main(void)
則執行結果為 1
但是如果在file1.c中把int a=1改為static int a=1;
那麼在file2.c是無法訪問到變數a的。
原因在於用static對全域性變數進行修飾改變了其作用域的範圍,由原來的整個工程可見變為本原始檔可見。
3、修飾函式
用static修飾函式的話,情況與修飾全域性變數大同小異,就是改變了函式的作用域。
二.c++中的static
在c++中static還具有其它功能,如果在c++中對類中的某個函式用static進行修飾,則表示該函式屬於乙個類而不是屬於此類的任何特定 物件;如果對類中的某個變數進行static修飾,表示該變數為類以及其所有的物件所有。它們在儲存空間中都只存在乙個副本。可以通過類和物件去呼叫。
static和extern的區別
static 一 在c中,static主要定義全域性靜態變數 定義區域性靜態變數 定義靜態函式。1 定義全域性靜態變數 在全域性變數前面加上關鍵字static,該全域性變數變成了全域性靜態變數。全域性靜態變數有以下特點。a.在全域性區分配記憶體。b.如果沒有初始化,其預設值為0.c.該變數在本檔案內...
static和extern的區別
static 一 在c中,static主要定義全域性靜態變數 定義區域性靜態變數 定義靜態函式。1 定義全域性靜態變數 在全域性變數前面加上關鍵字static,該全域性變數變成了全域性靜態變數。全域性靜態變數有以下特點。a.在全域性區分配記憶體。b.如果沒有初始化,其預設值為0.c.該變數在本檔案內...
extern和static 的用法
一 extern定義全域性變數的用法 定義方式 1 在原始檔中定義 變數型別 變數名 變數初始化值 宣告方式一 1 在定義該變數的類的標頭檔案中宣告該變數 extern 變數型別 變數名 2 在需要使用該變數的其他類中新增該類的標頭檔案。宣告方式二 1 在需要使用該變數的其他類的標頭檔案中新增該類的...