首页 > 编程 > C++ > 正文

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

2019-11-11 02:12:31
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选