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; }【注】結構化程序設計中程序模塊的基本單位是函數,模塊間對內存中數據的共享是通過函數之間的數據共享實現的。有兩種途徑:參數傳遞和全局變量!
新聞熱點
疑難解答
圖片精選