static作用整理

2021-07-04 17:33:35 字數 975 閱讀 5792

一、static的作用

1、函式體內,乙個被宣告為static的變數在函式被呼叫過程中維持其值不變。

2、在模組內(但在函式體外),乙個被宣告為static的變數可被模組內的所有函式訪問,但不能被模組外的函式訪問。他是乙個本地全域性變數。

3、在模組內,乙個被宣告成static的函式只可被本模組的函式呼叫。

二、static變數及函式與普通變數及函式的區別

1、static全域性變數與普通全域性變數的區別是,static全域性變數只初始化一次,防止在其他檔案中被引用。

3、static函式與普通函式的區別是,static函式在記憶體中只有乙份,普通函式在每乙個被呼叫中維持乙份複製品。

三、注意

類中的靜態成員和方法不屬於類的例項,是屬於類本身,並在所有類的例項間共享。在呼叫它們時應該用類名加上「::」來引用。

1、類中的static變數需要在內外進行初始化。

2、類中的static函式不能通過this指標進行訪問,所以導致靜態成員函式不能呼叫類的非靜態成員。

3、區域性靜態物件的生命期是從其所在函式第一次被呼叫,更確切地說,是當第一次執行到該靜態物件的宣告**時,產生該靜態區域性物件,直到整個程式結束時,才銷毀該物件。

4、還有一種靜態物件,那就是它作為class的靜態成員。考慮這種情況時,就牽涉了一些較複雜的問題。

第乙個問題是class的靜態成員物件的生命期,class的靜態成員物件隨著第乙個class object的產生而產生,在整個程式結束時消亡。也就是有這樣的情況存在,在程式中我們定義了乙個class,該類中有乙個靜態物件作為成員,但是在程式執行過程中,如果我們沒有建立任何乙個該class object,那麼也就不會產生該class所包含的那個靜態物件。還有,如果建立了多個class object,那麼所有這些object都共享那個靜態物件成員。對於類的靜態成員,基類及其派生類的所有物件都共享這個靜態成員物件,所以當需要在這些class之間或這些class objects之間進行資料共享或通訊時,這樣的靜態成員無疑是很好的選擇。

static用法,作用

當我們宣告乙個全域性函式和變數時函式預設的前面加的是extern 全域性變數和函式都具有全域性可見性,也就是在a檔案中宣告的也能在b檔案中使用。如果加了static,就會對其它原始檔隱藏。利用這一特性可以在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。static可以用作函式和變數的字首,...

static變數的作用

static變數的作用 1,改變變數的生命期 對於static 全域性變數而言,生命期沒有改變,在整個程式執行過程中該變數一直存在。但其作用域反而減小,只有本檔案的函式可以引用該全域性變數。對於static 區域性變數,其作用於沒有改變,只有定義該區域性變數的函式可以引用該變數。但其生命期發生了改變...

static的作用小結

在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。...