全局變量與靜態(tài)全局變量的主要區(qū)別是:作用域不同.
全局變量的作用域不僅在本文件中可以使用,在其他文件中也可以使用.但靜態(tài)全局變量只能在本文件中使用.
如假設(shè)在1.cpp里定義了一個全局變量int g_val=1;一個靜態(tài)全局變量int s_val=2
在2.cpp里可以正常使用g_val這個變量,但是不能訪問s_val這個變量.
//1.cpp
#include<iostream> using namespace std;
int g_val=1; static int s_val=2; int main() { return 0;
} //2.cpp
extern int g_val;//要加extern關(guān)鍵字 extern int s_val;//雖然這個也可引用 void test() { g_val=0; s_val=3;//這里訪問出錯. }
靜態(tài)局部變量與一般局部變量的區(qū)別就是:生存期不同
靜態(tài)局部變量的生存期在程序運行期間都存在,下一次會引用上次訪問的值.
如
#include<iostream> using namespace std; void fun() { int i=0;//下一次進(jìn)來的時候這步仍執(zhí)行,即i又變回0 static int val=0;//只初始化一次,下一次進(jìn)來這個函數(shù)的時候,val的值是引用上次的值.而不是0 val++; i++; cout<<"靜態(tài)局部變量:"<<val<<endl; cout<<"一般局部變量:"<<i<<endl;
} int main() { fun(); fun(); return 0;
}
|