1、C++中標(biāo)識符作用域:
函數(shù)原型作用域:在函數(shù)聲明中形參列表左右括號之間;
局部作用域(塊作用域):聲明變量所在的大括號之間
類作用域:類的成員所具有的作用域
命名空間作用域:using namespace std;全局命名空間
2、對象生存期:
靜態(tài)生存期:在空間命名作用域中生命的對象具有靜態(tài)生存期,與程序的運(yùn)行期相同。在函數(shù)內(nèi)部的局部作用域中聲明具有靜態(tài)生存期的對象,要使用關(guān)鍵字static,局部作用域中的靜態(tài)變量,當(dāng)一個函數(shù)返回后,下一次再調(diào)用時該變量還會保存上一回的值。
動態(tài)生存期:除上述兩種情況,其余的對象都具有動態(tài)生存期。動態(tài)生存期變量不指定初始值意味著初始值不定。
【注】函數(shù)中的靜態(tài)局部變量,具有全局壽命,只在第一次進(jìn)入函數(shù)時初始化,以后調(diào)用時保留上一次的數(shù)值;而函數(shù)中的動態(tài)變量每次進(jìn)入函數(shù)時都需要初始化。
#include <iostream>using namespace std;int i=1;//變量i具有命名空間作用域,靜態(tài)全局變量,具有靜態(tài)生存期 void fun(){	static int a=2;	static int b;//靜態(tài)局部變量,只在第一次進(jìn)入函數(shù)時初始化 	int c=10;//動態(tài)局部變量 ,每次進(jìn)入函數(shù)都要初始化 	a+=2;	c+=5;	i+=32;	cout<<"---fun---"<<endl;	cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;	b=a;}int main(){	static int a;//main函數(shù)中的靜態(tài)局部變量 	int b=-10;	int c=0;    //main函數(shù)中的動態(tài)局部變量	cout<<"---main---"<<endl;	cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;	c+=8;	fun();	cout<<"---main---"<<endl;	cout<<"i:"<<i<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;	i+=10;	fun();	return 0;	 }【注】結(jié)構(gòu)化程序設(shè)計(jì)中程序模塊的基本單位是函數(shù),模塊間對內(nèi)存中數(shù)據(jù)的共享是通過函數(shù)之間的數(shù)據(jù)共享實(shí)現(xiàn)的。有兩種途徑:參數(shù)傳遞和全局變量!
新聞熱點(diǎn)
疑難解答
圖片精選