C語言 關鍵字static

2021-10-24 15:30:08 字數 1251 閱讀 4818

一、修飾區域性變數—靜態區域性變數

修飾前**

#include

void

test()

intmain()

return0;

}

修飾後**

#include

void

test()

intmain()

return0;

}

結論:

static修飾區域性變數改變了變數的生命週期,讓靜態區域性變數出了作用域依然存在,到程式結束,

生命週期才結束。

有兩個作用:

1、作用域:在本**塊內有效,用static修飾,這個作用不變。

2、生命週期:具有臨時性,static修飾,則該變數的生命週期變成全域性屬性。

二、修飾全域性變數—靜態全域性變數

修飾前**

int g_val =

2018

;#include

extern

int g_val;

//宣告變數

intmain()

修飾後**

static

int g_val =

2018

;#include

intmain()

結論:

乙個全域性變數被static修飾,使得這個全域性變數只能在本原始檔內使用,

不能在其他原始檔內使用。

三、修飾函式—靜態函式

修飾前**

void

show()

intmain()

//修飾後**

static

void

show()

intmain()

修飾後**

static

void

show()

intmain()

**1正常,**2在編譯的時候會出現連線性錯誤。

結論:

乙個函式被static修飾,使得這個函式只能在本原始檔內使用,不能在其他原始檔內使用。

函式也可以跨檔案訪問。

C語言關鍵字Static

c語言中static的語義 1.static變數 1 區域性 a.靜態區域性變數在函式內定義,生存期為整個源程式,但作用域與自動變數相同,只能在定義該變數的函式內使用。退出該函式後,儘管該變數還繼續存在,但不能使用它。b.對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變...

c語言static關鍵字

以前一直覺得static關鍵字僅僅是定義乙個靜態的變數,今天在看書的時候發現一切沒那麼簡單,遂決定記錄下來。1.static關鍵字指明變數是乙個靜態變數,即static修飾的區域性變數並不是分配在棧中,而是分配在程式的靜態區中,所以在函式呼叫後其記憶體並不會被釋放。這裡需要注意乙個點,也就是說並不是...

C語言static關鍵字

includevoid main void fn void void fn static void int main void include 在乙個檔案中,使用另外乙個檔案的全域性變數,使用ertern引入即可 extern int num extern int num2 int num 60 v...