static 函式 C 中的static

2021-10-12 09:16:36 字數 1080 閱讀 2452

函式中的靜態變數:當變數宣告為static時,空間將在程式的生命週期內分配,其被存放在在全域性資料區。即使多次呼叫該函式,靜態變數的空間也只分配一次前一次呼叫中的變數值通過下一次函式呼叫傳遞。這對於在c / c ++或需要儲存先前函式狀態的任何其他應用程式非常有用。

ps:對於乙個完整的程式,在記憶體中的分布情況如下圖:

靜態區(全域性區):靜態變數和全域性變數的儲存區域是一起的,一旦靜態區的記憶體被分配, 靜態區的記憶體直到程式全部結束之後才會被釋放。

#include #include using namespace std; 

void demo()

int main()

輸出:

0 1 2 3 4
類中的靜態變數宣告為static的變數只被初始化一次,因為它們在單獨的靜態儲存中分配了空間,因此類中的靜態變數由物件共享,可以減小物件的大小。對於不同的物件,不能有相同靜態變數的多個副本。也是因為這個原因,靜態變數不能使用建構函式初始化。

注意:類中的靜態成員變數必須在類內宣告,在類外定義(被const修飾的除外).

; };

; };

類中的靜態成員函式:靜態成員函式也不依賴於類的物件。我們被允許使用物件和'.'來呼叫靜態成員函式。但建議使用類名和範圍解析運算子呼叫靜態成員。靜態成員函式僅能訪問靜態資料成員或其他靜態成員函式,它們無法訪問類的非靜態資料成員或成員函式。

靜態類:和變數一樣,靜態類的生命週期直到程式的結束。在main結束後才會呼叫靜態類的析構函式。

ps:去年面位元組實習的時候就被面試官問到了static的特點,當時只記得乙個類成員static的特點,太菜了太菜了,基礎還是很重要啊wwwwww

C中的static函式小結

c語言中函式可以分為static和非static兩種,這兩種函式在使用上會有一些不同,具體如下 1 定義的位置 static函式可以定義在.h檔案以及.c檔案中 非static函式只能定義在.c檔案中 2 作用範圍 static函式只能作用於本檔案中,這裡也要看情況,具體如下 1.當static 函...

c 中static成員函式

1 只能訪問static成員變數,因為靜態成員函式沒有this指標,不能指向具體的物件,所以不能訪問普通的成員變數 2 在函式體內可以通過類名去呼叫static成員函式,3 主要目的是去訪問static成員變數 雖然宣告為普通成員函式也可以,但加上static語義更明確 static為什麼只被初始化...

stat函式的用法

stat函式的用法 標頭檔案 include 函式定義 int stat const char file name,struct stat buf 函式說明 通過檔名filename獲取檔案資訊,並儲存在buf所指的結構體stat中 返回值 執行成功則返回0,失敗返回 1,錯誤 存於errno 需要...