C++ 标识符作用域以及对象生存期

来源:互联网 发布:sql建立学生表 编辑:程序博客网 时间:2024/06/03 16:44

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; }
【注】结构化程序设计中程序模块的基本单位是函数,模块间对内存中数据的共享是通过函数之间的数据共享实现的。有两种途径:参数传递和全局变量!





0 0