c/c++中static關鍵字可以從以下三個方面理解
static int a;
本質意義為static修飾的變數被分配在靜態儲存區,不是在棧上,也不是在堆上。
所以有以下應用場景。
1,c語言中,會在初次執行的時候進行初始化,整個程式執行期間都不釋放。
如果變數為c++ 類物件,則在main()之前執行建構函式,進行初始化。
2,由於儲存區不是在棧上,所以函式中用static修飾的區域性變數就有「記憶性」。
也就是指在兩次函式呼叫時, 在第二次呼叫進入時, 能保持第一次呼叫退出時的值.
static int a;
static void foo();
用static修飾的函式或者變數,只能在定義它的檔案內被使用。
這樣不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。
c++重用了這個關鍵字,並賦予它與前面不同的第三種含義:表示屬於乙個類而不是屬於此類的任何特定物件的變數和函式.
與普通成員函式的最大區別, 是static修飾的變數/函式在此類中的唯一性.
這也是」屬於乙個類而不是屬於此類的任何特定物件的變數和函式」。
例如:class myclass
public:
static int getnumber() ;
private:
static in mnum;
myclass a, b;
則a,b 中只有乙份nnum,它既不屬於a,也不屬於b。
C C 的static關鍵字
static主要有三個作用 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 前兩種c和c 都有,第三種僅在c 中有,下面分別作以下介紹 一 區域性靜態變數 在c c 中,區域性變數按照儲存形式可分為三種auto,static,register。其中register不常用到,下...
static關鍵字(C C 語言中的作用)
類中靜態成員注意事項 1 類中靜態成員分為 靜態資料成員 和 靜態成員函式。2 靜態資料成員與全域性物件的區別 1 static成員的名字是在類的作用域中,可以避免命名衝突。2 static資料成員可以是私有成員,而全域性物件不可以。3 static成員遵循正常的訪問規則。4 類中static資料成...
C C 中的static關鍵字
關鍵字extern和static用來說明具有靜態儲存期的變數和函式。用static宣告的區域性變數只能被定義該變數的函式所識別,但是不同於自動變數的是,static變數在其函式被呼叫退出後,仍保留其值。下次函式被呼叫時,可以訪問最近一次被修改後的值。static變數的宣告方法如下 static in...