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...