解析static關鍵字的作用
阿新 • • 發佈:2018-12-17
在C語言中static的作用:
1.)修飾區域性變數:static修飾的靜態區域性變數只執行一次,而且延長了區域性變數的生命週期,隨程式的結束而結束。
2.)修飾全域性變數:被static修飾的全域性變數只能在本檔案中訪問,不能再其它檔案中訪問。
3.)修飾函式:修飾的函式只能在本檔案中呼叫,不能被其它檔案呼叫。
static修飾的區域性變數存放在全域性資料區的靜態變數區,初始化的時候自動初始化為0;
(1)不想被釋放的時候,可以使用static修飾。比如修飾函式中存放棧空間的陣列,如果不想讓這個陣列在函式呼叫時結束則可用static修飾。‘
(2)考慮到資料安全性(當程式想要使用全域性變數的時候應該考慮使用static)
在c++中static除了具有c的作用還在類中使用:
static修飾靜態資料成員
1.)靜態資料成員可以實現多個物件之間的資料共享,它是類的所有物件的共享成員,它在記憶體中只佔一份空間,如果改變它的值,則各物件中這個資料成員的值都被改變。
2.)靜態資料成員是在程式開始執行時被分配空間,到程式結束之後才釋放,只要類中指定了靜態資料成員,即使不定義物件,也會為靜態資料成員分配空間。
3.)靜態資料成員可以被初始化,但只能在類體外進行初始化,若為靜態資料成員賦初值,則編譯器會自動為其初始化為0.
4.)靜態資料成員既可以通過物件名引用,也可以通過類名引用。
static修飾靜態成員函式
1.)靜態成員函式和靜態資料成員一樣,他們都屬於類的靜態成員,而不是物件成員。
2.)非靜態成員函式有this指標,而靜態成員函式沒有this指標。‘
3.)靜態成員函式主要用來訪問靜態資料成員而不能訪問非靜態成員。