C語言 static 用法總結

2021-06-26 09:53:22 字數 1323 閱讀 5004

只能被模組內的函式呼叫,不能被模組外的函式呼叫。模組可以理解為當前.c檔案。

靜態函式會被自動分配在乙個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。(這句話有待驗證)

2.1 作用範圍:   只能在當前.c檔案中使用。

2.2 儲存位置:  靜態資料區。

2.3 生命週期:整個程式執行期間

2.4 定義 及 初始化 :

static全域性變數可以顯示初始化

static int s_param = 10;
也可以省去 「= 10」,讓系統預設初始化

static int s_param;   //預設初始化

int main(int argc, char* argv)

其實global全域性變數也具備這一屬性,因為全域性變數儲存在靜態資料區。在靜態資料區,記憶體中所有的位元組預設值都是0x00,某些時候這一特點可以減少程式設計師的工作量。但是,預設初始化這種方法並不推薦,推薦使用顯示初始化!

2.5 比較

作用域儲存

生命週期

static全域性變數

當前.c檔案

靜態資料區

整個程式執行期間

全域性變數

整個源程式

靜態資料區

整個程式執行期間

3.1 作用範圍:當前函式體。

3.2 儲存位置:  靜態資料區。

3.3 生命週期:整個程式執行期間

3.4 定義及初始化:

static區域性變數可以顯示初始化,也可以由系統預設初始化。

static int s_local;  //預設初始化

static int s_local_param = 1; //顯示初始化,推薦使用

3.5 比較

作用域儲存

生命週期

static區域性變數

當前函式體

靜態資料區

整個程式執行期間

普通區域性變數

當前函式體

該函式執行過程中,從定義開始到函式執行完即被釋放



c語言中static用法總結

一 c程式儲存空間布局 c程式一直由下列部分組成 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。堆 ...

c語言static用法

c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。4 棧 增長方向...

C 中static用法總結

1 c 語言的 static 關鍵字有三種 1.靜態區域性變數 2.靜態全域性變數 3.靜態函式 注 對應於上面,static修飾普通變數分為靜態區域性和靜態全域性兩種。靜態全域性變數和靜態函式的作用類似,均只在本檔案內可見,不能為其他檔案所用,故其實也可以將靜態全域性變數和靜態函式作為一類,而靜態...