C以及C 中的static用法講解

2021-10-07 08:37:44 字數 734 閱讀 6538

c語言中static 關鍵字用處分為兩類:變數和函式。而在c++中,static關鍵字同時還具有物件導向的作用

1. 區域性變數

普通區域性變數(不加static修飾),編譯器一般不對普通區域性變數進行初始化,也就是說它的值在初始時不確定,除非對其顯式賦值。

普通區域性變數存在進行棧中,使用完立即釋放。
靜態區域性變數使用static修飾,即使在宣告時未賦值,編譯器也會將它初始化為0。且靜態區域性變數儲存在程序的全域性資料區,即使函式返回,它的值也會不變。

靜態區域性變數存在全域性資料區分配儲存空間;若無初始值,編譯器自動對其初始化。

其作用域為區域性作用域,當函式返回時,它的作用域也結束,但是值仍然存在。

2. 全域性變數

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

普通全域性變數對整個工程都可見,其他檔案使用extern宣告後,就能直接使用,同時在整個工程中具有唯一性。

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

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

靜態資料成員

在類內資料成員的宣告前加上static關鍵字,該資料成員就是類內的靜態資料成員。其特點如下:

靜態成員函式

與靜態資料成員類似,靜態成員函式屬於整個類,而不是某乙個物件,其特性如下:

C中 static 的用法

對於函式而言,僅僅為隱藏作用。對於變數而言,1 隱藏 2 可以保持變數內容的持久,因為static變數儲存在靜態儲存區只在程式的剛開始完成初始化,唯一的一次初始化 即使在子函式中作靜態變數 若未賦值,則系統自動賦予0值。為自動區域性變數不賦初值的話,其值不定。當編譯多個檔案時,所有未加static字...

解析static在C和C 中的用法以及區別

static主要有三個作用 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 前兩種c和c 都有,第三種僅在c 中有,下面分別作以下介紹 一 區域性靜態變數 在c c 中,區域性變數按照儲存形式可分為三種auto,static,register。其中register不常用到,下...

c和c 中的static的用法

1.首先在c中 有乙個區域叫做全域性區或者靜態區,又分為data區和bss區 static修飾區域性變數為了使得變數具有全域性性質,而修飾全域性變數和函式都是為了其他的原始檔不可見這個變數。static如果修飾函式中的區域性變數,那麼之後這個函式每次呼叫這個變數時,都是使用上次函式執行完成之後該變數...