C++---關鍵字static作用

關鍵字static作用?

Static可以用作函數變量的前綴

1、對於函數來講,static的作用僅限於隱藏

在模塊內的static變量可以被模塊內所有函數訪問,但不能被模塊外其他函數訪問。

在模塊內的static函數只可被這一模塊內的其他函數調用,這個函數的使用範圍被限制在聲明它的模塊內。

2、static變量作用

2.1函數體內static變量的作用範圍爲該函數體,不同於auto變量,該變量的內存只被分配一次,因此其值在下次調用時仍維持上次的值。
2.2static保持變量內容的持久。存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是唯一的一次初始化。共有兩種變量存儲在靜態存儲區:全局變量和static變量,只不過和全局變量比起來,static可以控制變量的可見範圍,說到底static還是用來隱藏的。

#include "stdafx.h"
#include "windows.h"
void printfVal()
{
	static int a = 0;                  //並不是每次調用該函數都初始化a = 0
	printf("%d\n", a++);
}
int main()
{
	for (int i = 0; i < 10; i++)
	{
		printfVal();                   //返回結果 0,1,2,3,4,5,6,7,8,9
	}
	while (true)
	{
		Sleep(10);
	}
    return 0;
}

2.3static默認初始化爲0。其實全局變量也具備這一屬性,因爲全局變量也存儲在靜態數據區。在靜態數據區,內存中所有的字節默認值都是0x00,某些時候這一特點可以減少程序員的工作量。建議:聲明static變量時,程序員自己初始化變量

3.類中的static變量和static函數

3.1在類中的static成員變量屬於整個類所有,對類的所有對象只有一份拷貝。

3.2在類中的static成員函數屬於整個類所有,這個函數不接受this指針,因而只能訪問類的static成員變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章