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