03.05 C語言關鍵字 static 的用法

C語言關鍵字 static 的用法

C語言 static 關鍵字的常見用法有三種:

  • 用於局部變量的修飾符;
  • 用於全局變量的修飾符;
  • 用於函數的修飾符。

1、用於局部變量的修飾符

當 static 用於修飾局部變量時,通常是在某個函數體內,只能在該函數內被調用。

這樣定義的變量通常被稱為局部靜態變量,它的值不會因為函數調用的結束而被清除,當函數再次被調用時,它的值是上一次調用結束後的值。

如下面這段代碼所示,變量 x 是局部變量,變量 y 是靜態局部變量。在調用函數後,變量 x 的值會被清除,而變量 y 的值則會被保留。多次調用該函數,變量 x 每次都會從新初始化,而變量 y 的值則不會。

C語言關鍵字 static 的用法

靜態局部變量的特性:

  • 存儲位置:處於靜態存儲區,當用 static 修飾局部變量的時候,它就改變了局部變量的存儲位置,從原來的棧中存放改為靜態存儲區;
  • 初始化操作:未經初始化的局部靜態變量會被程序自動初始化為0(自動對象的值是任意的,除非他被顯示初始化);
  • 作用域:為局部作用域,即當定義它的函數結束的時候,作用域隨之結束(不能被訪問)。但是靜態局部變量在離開作用域之後,並沒有被銷燬,而是仍然保存在內存當中,直到程序結束。

2、用於全局變量的修飾符

關鍵字 static 還可用於修飾全局變量,該變量在某一個文件中變量,但不屬於任何一個函數內,這樣的變量通常稱為靜態全局變量

靜態全局變量的存儲位置、初始化操作同靜態局部變量的特性,但其作用域有所不同:靜態全局變量可以被該文件內的所有函數訪問,但不能被其它文件內的函數訪問。

3、用於函數的修飾符

關鍵字 static 還可以用於修飾一個函數,這樣的函數稱之為靜態函數。

定義一個靜態函數就是在函數的返回類型前加上 static 關鍵字。

靜態函數的作用域僅限於本文件,不能被其它文件調用。

C語言關鍵字 static 的用法


分享到:


相關文章: