關鍵字static在標準C/C++的作用
static總結:根據作用域,存儲域,生命周期3點來說
static含義: 是C/C++中很常用的修飾符,它被用來控制變量的存儲方式和可見性。
(1)標準C語言中,static的最主要功能是隱藏,其次因為static變量存放在靜態存儲區,所以它具備持久性和默認值0。
1、隱藏指的是作用域的區別,如果此函數或者變量被static關鍵字修飾
a、修飾的是局部變量,那麽只能在函數內可見(可使用)。
b、修飾的是全局變量或函數,那麽只能在當前文件下可見。其他的文件即使用extern聲明也不能使用
2、存儲域
a、static函數在內存中只有一份,普通函數在每次調用中都有一份拷貝。
b、如果變量有初始化,那麽會存儲在全局數據區。未被初始化,會被存儲在靜態數據區,系統會自動賦予0值
3、生命周期
當程序開始時初始化,也是唯一一次,此變量創建直到程序結束
(2)標準C++語言中
靜態變量:
(1)靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只占一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。
(2)靜態數據成員是在程序開始運行時被分配空間,到程序結束之後才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。
(3)靜態數據成員可以被初始化,但是只能在類體外進行初始化,若未對靜態數據成員賦初值,則編譯器會自動為其初始化為0
(4)靜態數據成員既可以通過對象名引用,也可以通過類名引用。
靜態成員:
(1)靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。
(2)非靜態成員函數有this指針,而靜態成員函數沒有this指針。
(3)靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。
關鍵字static在標準C/C++的作用