C C 關鍵字static的作用

2021-10-04 15:31:35 字數 2398 閱讀 5955

c++ static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者主要用於普通變數和函式。後者主要用於static在類中的作用。

1.1 靜態全域性變數

在全域性變數前加上關鍵字static ,該變數就會被定義成乙個靜態全域性變數

如下:

satic int n;

//定義靜態全域性變數

void

function()

intmain()

那為什麼我們不把static去掉,直接定義成int n呢?其實這也沒錯,程式會照樣執行,但是定義成靜態全域性變數,還有以下好處:

就像是以下**所示:

//檔案1

#include

#include

using

namespace std;

static

int n;

//定義靜態全域性變數

voidfn(

);intmain()

//檔案2

#include

#include

using

namespace std;

extern

int n;

//定義相同名字的變數n

voidfn(

)

此時我們發現,雖然單個檔案時編譯通過了,但是執行會報錯,這就是我們之前所提到的:我們可以在另外乙個檔案定義與靜態全域性變數相同的變數名稱,但是靜態全域性變數不能被這個檔案使用。

靜態全域性變數的特點:

1.2 靜態區域性變數

如下**:

voidfn(

)

在函式體內定義了乙個變數,每當程式執行到該語句時都會給該區域性變數分配棧記憶體。但隨著程式退出函式體,系統就會收回棧記憶體,區域性變數也相應失效。

那這裡static的作用更加明顯,第一次執行上述的fn函式,會輸出n=10;當第二次執行fn的時候n=11,因為static可以對兩次呼叫之間對變數的值進行儲存。那這裡我們就明白了為什麼不能用int n=10了,因為這樣定義,即使呼叫無數次fn,n的值還是10,不會變化。那為什麼不直接定義成全域性變數,把int n=10直接寫到函式外面?因為如果這樣定義的話,那這裡這個變數就不再屬於函式本身了,不受函式的限制,給程式維護帶來不便。

靜態區域性變數有以下特點:

1.3 靜態函式

在函式的返回型別前加上static關鍵字,函式即被定義為靜態函式。靜態函式與普通函式不同,它只能在宣告它的檔案當中可見,不能被其它檔案使用。如下所示:

#include

using

namespace std;

static

voidfn(

);//宣告靜態函式

voidfn(

)//定義靜態函式

intmain

(void

)

定義靜態函式的好處:

2.1、靜態資料成員

在類內資料成員的宣告前加上關鍵字static,該資料成員就是類內的靜態資料成員。先舉乙個靜態資料成員的例子,如下:

#include

using

namespace std;

class

myclass

;int myclass::sum =0;

//定義並初始化靜態資料成員

我說的簡單點吧:

2.2 靜態成員函式

靜態成員函式和靜態資料成員一樣,它們都屬於類的靜態成員,它們都不是物件成員。因此,對靜態成員的引用不需要用物件名。

靜態成員函式的定義如下:

#include

using

namespace std;

class

myclass

;int myclass::sum =0;

//定義並初始化靜態資料成員

myclass::

myclass

(int a ,

int b ,

int c)

void myclass::

getsum()

//靜態成員函式的實現

與普通函式相比,靜態成員函式由於不是與任何的物件相聯絡,因此它不具有this指標。從這個意義上講,它無法訪問屬於類物件的非靜態資料成員,也無法訪問非靜態成員函式,它只能呼叫其餘的靜態成員函式

總結靜態成員函式(重點):

C C 中static關鍵字的作用

在c語言中static的作用如下 第一 在修飾變數的時候,static修飾的靜態區域性變數只執行一次,而且 延長了區域性變數的生命週期,直到程式執行結束以後才釋放。第二 static修飾全域性變數的時候,這個 全域性變數只能在本檔案中訪問 不能在其它檔案中訪問,即便是extern外部宣告也不可以 第...

C C 中static關鍵字的作用

在c語言中static的作用如下 第 一 在修飾變數的時候,static修飾的靜態區域性變數只執行一次,而且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。第二 static修飾全域性變數的時候,這個全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern外部宣告也不可以。第三...

C C 中static關鍵字的作用

一 在c語言中static的作用如下 1 static修飾變數時,修飾的靜態區域性變數只執行一次,延長區域性變數的生命週期,在程式執行結束後才會釋放。2 static修飾全域性變數時,全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern外部宣告也不可以。3 static修飾函式時,...