十九、C++程序设计必知:生存期

和自然办的事物一样,程序中的变量和对象等也有生存期,从产生到消亡。
生存期主要有两种,静态和动态。
1、静态生存期
某个对象的生存时间和程序运行期相同,我们就说它具有静态生存期。
很明显文件域的对象具有静态生存期。
使用块作用域具有静态生存期的方法,加static关键字修饰。
 
2、动态生存期
除开上面的静态生存期,其余对象具有动态生存期。具有动态生存期的对象产生于声明处,于对象作用域处结束。
<pre name="code" class="cpp">#include<iostream>
using namespace std;
int a=1;  //全局变量,静态生存期
void fun();
int main()
{
	static int x; //静态生存期,局部可见性,默认初始化为0
	int y=10;
	cout<<"main:"<<endl;
	cout<<"a:"<<a<<" "<<"x:"<<x<<" "<<"y:"<<y<<endl;
	a=a+1;
	fun();
    x=x+1;
	cout<<"main:"<<endl;
	cout<<"a:"<<a<<" "<<"x:"<<x<<" "<<"y:"<<y<<endl;
	fun();
	return 0;
}
void fun()
{
	static int x=2; //静态生存期,局部可见性,与主函数中的x无关
		//x只在第一次进入函数时初始化,之后就延用最后调用的值
	int y=3;  //动态生存期 每次都初始化
	y=y+3;
	a=a+2;
	x=x+10;
	cout<<"fun:"<<endl;
	cout<<"a:"<<a<<" "<<"x:"<<x<<" "<<"y:"<<y<<endl;
}

main:
a:1 x:0 y:10    //a一直在变化,经main和fun累加
fun:
a:4 x:12 y:6
main:
a:4 x:1 y:10    //主函数x随主函数运算变化
fun:
a:6 x:22 y:6    //fun函数x二次累加基于fun第一次的12 具有静态生存期和局部可见性 y值重新赋值计算


 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值