1、C語言中的關鍵字static和C++中的關鍵字static有什麼區別
在C中static用來修飾局部靜態變量和外部靜態變量、函數。而C++中除了上述功能外,還可以用來定義類的成員變量和函數,即靜態成員和靜態成員函數。
2、static變量的作用
1)static變量有2個特性,全局性和記憶性
2)在函數體內,一個被聲明爲靜態的變量在這一函數被調用的過程中其值維持不變
3)在模塊內(但在函數體外),它的作用域爲該模塊內的所有函數,它不能被模塊外的其他函數訪問。它是一個本地的全局變量。
4)內部函數應該在當前源文件中說明,對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,使用這些函數的源文件要包含這個頭文件。
4、C++中static數據成員的特點
1)對於非靜態數據成員,每個對象都有自己的複製品,而靜態數據成員被當做類的成員,無論有多少個對象,都只有一份複製品,由該類的所有對象所共享
2)靜態數據成員存儲在全局數據區,定義時需要分配空間,所以不能再聲明中定義。
3)靜態數據成員和普通數據成員一樣遵從pulic、protected、private訪問規則
4)static成員變量初始化在類外,此時不能帶上static的關鍵字。protected和private的static變量雖然在類外初始化,但是不能再類外被訪問
5、全局變量和static變量的區別
1)靜態數據成員只能在本文件中被訪問,文件外不可以,但是全局變量在別的文件中也可以使用
2)static變量可以加上protected和private修飾,隱藏信息,而全局變量不行
6、static變量只能被初始化一次,而且不能再頭文件中定義static變量