也是因為在最近的面試中,幾乎每次必問static關鍵字的用法,但是總會說漏一點,因為自己平時寫**貌似用得也不多(菜雞嘛,可以理解)。要想答得完美,還是得總結一下,static共有五種用法,下次就直接背給面試官聽咯,不不不,得理解,用**說服之。
1、修飾區域性變數
位於靜態儲存區,作用域為區域性,但有點類似全域性變數了,即賦值一次後,就會一直儲存這個值,然後可以進行常規的運算,雖不能在區域性作用域外對他訪問,但仍然在記憶體中存放著。
void
fun(
)int
main()
2、修飾全域性變數
位於靜態儲存區,在整個程式執行期間一直存在,可以通過extern 變數名去訪問其他檔案的非靜態全域性變數(不需要include 標頭檔案),但是對於靜態全域性變數則不行。
static
int s_quanju =10;
void
fun(
)int
main()
3、修飾普通函式
在函式返回型別前加static,函式就定義為靜態函式。靜態函式只是在宣告他的檔案當中可見,不能被其他檔案所用。
static
void
fun();
//宣告
intmain()
void
fun(
)
啥時候用static:若全域性變數僅在單個檔案中可用,則宣告為static全域性變數,若全域性變數僅在單個函式內部可用,則宣告為static區域性變數。
4、修飾類成員變數
a.靜態成員可供所有的物件訪問,只分配一次記憶體,也只有乙份拷貝,對於每個物件都是一樣,它的值可以更新;
b.靜態成員儲存在全域性資料區,因此不能在類宣告中定義,但在使用前必須初始化(main函式外);
c.訪問:通過物件或者類名來訪問;
d.靜態成員的訪問符和普通成員一樣:public、protected、private;
class example};
int example:
:count =1;
//不能再main裡面初始化
intmain()
5、修飾類成員函式
a.與靜態類成員變數類似,它是類內部共同享用,和普通函式不同,靜態成員函式沒用this指標;
b.訪問:通過物件或者類名來訪問;
c.非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員,但反過來不行;
d.靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態成員變數和靜態成員函式;
class example
static
void
fun1()
;void
fun2()
void
fun3()
;};void example:
:fun1()
C static關鍵字用法總結
c static 關鍵字用法總結 1.首先解釋一下static 是什麼意思?static 是靜態的意思,既然是靜態,就是不變的,而不變就是他不會因為類中例項化物件的不同而不同,它在類中永遠只有乙份,就像中國人有許多,但我們只有乙個國家中國。2 由static 修飾的歸屬問題 由static 修飾的不...
c static 關鍵字用法
一 static 變數 static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫 3.用於類中的成員.表示這個成員是屬於這個類但是不屬於類中任意特定物件 1.靜態區域性...
C static關鍵字用法
1.全域性靜態變數 在全域性變數前加上關鍵字static,全域性變數就被定義成為全域性靜態變數,存放在靜態儲存區,在整個程式的執行期間一直存在 初始化 未初始化的全域性靜態變數會被自動初始化為0 自動物件的值是任意的,除非他被顯示初始化 作用域 作用域發生改變,僅在當前檔案中有效。2.區域性靜態變數...