只能被模組內的函式呼叫,不能被模組外的函式呼叫。模組可以理解為當前.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修飾普通變數分為靜態區域性和靜態全域性兩種。靜態全域性變數和靜態函式的作用類似,均只在本檔案內可見,不能為其他檔案所用,故其實也可以將靜態全域性變數和靜態函式作為一類,而靜態...