1. 程式人生 > >關鍵字static在標準C/C++的作用

關鍵字static在標準C/C++的作用

功能 static變量 c語言 生命周期 生命 this指針 stat 個數 全局數據區

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++的作用