C 中的基礎相關知識之static

2021-08-09 19:13:19 字數 1090 閱讀 8619

1,靜態變數static

分配在靜態儲存區。靜態變數或靜態函式只有本檔案內的**才能訪問它,它的名字在其它檔案中不可見。

a,函式內部區域性靜態變數

• 該變數在全域性資料區分配記憶體;

• 靜態區域性變數在程式執行到該物件的宣告處時被首次初始化,即以後的函式呼叫不再進行初始化;

• 靜態區域性變數一般在宣告處初始化,如果沒有顯式初始化,會被程式自動初始化為0;

• 它始終駐留在全域性資料區,直到程式執行結束。但其作用域為區域性作用域,當定義它的函式或語句塊結束時,其作用域隨之結束;

b,靜態全域性變數

• 該變數在全域性資料區分配記憶體;

• 未經初始化的靜態全域性變數會被程式自動初始化為0(自動變數的值是隨機的,除非它被顯式初始化);

• 靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的;

c,靜態函式

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

d,靜態成員函式

關於靜態成員函式,可以總結為以下幾點:

• 出現在類體外的函式定義不能指定關鍵字static;

• 靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

• 非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

• 靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

• 由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比速度上會有少許的增長;

e,靜態成員變數

靜態資料成員儲存在全域性資料區。靜態資料成員定義時要分配空間,所以不能在類宣告中定義。

靜態資料成員和普通資料成員一樣遵從public,protected,private訪問規則;

• 因為靜態資料成員在全域性資料區分配記憶體,屬於本類的所有物件共享,所以,它不屬於特定的類物件,在沒有產生類物件時其作用域就可見,即在沒有產生類的例項時,我們就可以操作它;

• 靜態資料成員初始化與一般資料成員初始化不同。靜態資料成員初始化的格式為:

<資料型別><類名>::<靜態資料成員名>=<值>

C 相關基礎知識

1 記憶體空間分配 2 c 字元陣列 0 問題 從c繼承而來c風格字串 c style character string 它不是一種型別,而是為了表達和使用字串而形成的一種約定俗成的寫法。按此習慣書寫的字串存放再字元陣列中並以空字元結束 null terminated 以空字元結束的意思是再字串最後...

c語言中的static和c 中的static比較

c語言中 static如果是修飾的全域性變數表示,該變數不能被其他檔案使用,函式也是一樣.如果修飾區域性變數,那麼,該變數存放在靜態區,只能被初始化一次,生命週期隨之檔案的結束而結束.c 中 static修飾的變數,只能在類外初始化,而且,必須初始化,可以由類直接訪問,可以在同族類中實現資料共享,在...

Python基礎之異常相關知識

當檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的 異常 例如 以r方式開啟乙個不存在的檔案。open test.txt r 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img 0agjxwza 1597499385910 01 異常.assets i...