static和extern的使用

2021-06-23 00:36:10 字數 985 閱讀 8061

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 在需要使用該變數的其他類的標頭檔案中新增該類的...