C語言中static關鍵字的作用

2021-09-28 21:45:41 字數 886 閱讀 9621

2.static對函式的作用

首先,看乙個普通區域性變數和靜態區域性變數的對比程式:

執行結果如下:

普通區域性變數儲存於程序棧空間,使用完畢會立即釋放。靜態區域性變數使用static修飾符定義,即使在宣告時未賦初值,編譯器也會把它初始化為0。且靜態區域性變數儲存於程序的全域性資料區,即使函式返回,它的值也會保持不變。其作用域為區域性作用域,當定義它的函式結束時,其作用域隨之結束;但是其生命域(生存期)擴大。

即:static修飾區域性變數時,其作用域(可見性)不變,但是其生命域(生存期)擴大到全域性。以至於其只被初始化一次,下一次依據上一次的結果值。

全域性變數定義在函式體外部,在全域性資料區分配儲存空間,且編譯器會自動對其初始化。

普通全域性變數對整個工程可見,其他檔案可以使用extern外部宣告後直接使用。也就是說其他檔案不能再定義乙個與其相同名字的變數了(否則編譯器會認為它們是同乙個變數)。

靜態全域性變數僅對當前檔案可見,其他檔案不可訪問,其他檔案可以定義與其同名的變數,兩者互不影響。

即:靜態全域性變數限制了變數的作用域(只能在原始檔中起作用),不改變其生命域(全域性)。

函式的使用方式與全域性變數類似,在函式的返回型別前加上static,就是靜態函式。其特性如下:

*靜態函式只能在宣告它的檔案中可見,其他檔案不能引用該函式

*不同的檔案可以使用相同名字的靜態函式,互不影響

非靜態函式可以在另乙個檔案中直接引用,甚至不必使用extern宣告
即:static限制了函式的作用域(只能在原始檔中呼叫)

C語言中的static關鍵字

c語言中的變數 1.自動變數。變數在執行到他的塊尾時就超出了作用域,它在堆疊上分配的記憶體會被釋放,以供另乙個函式使用。它們是在宣告時自動建立的,在程式退出宣告它的塊後自動刪除。2.全域性變數。可以在任意位置訪問,它的宣告方式和一般變數相同,但是它的位置非常重要,這個位置決定了變數是否為全域性變數。...

C語言中的static關鍵字

static關鍵字,意為靜態。靜態區域性變數void add test 靜態全域性變數 c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化...

C語言中static關鍵字用法

static關鍵字在c語言中比較常用,使用恰當能夠大大提高程式的模組化特性,有利於擴充套件和維護。變數1.區域性變數 普通區域性變數是再熟悉不過的變數了,在任何乙個函式內部定義的變數 不加static修飾符 都屬於這個範疇。編譯器一般不對普通區域性變數進行初始化,也就是說它的值在初始時是不確定的,除...