荣威550世博版:c++中的一个小问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/02 18:11:46
# include <iostream.h>
void other();
void main()
{
int a(3);
register int b(5);
static int c;
cout<<"a="<<a<<","<<"b="<<b<<","<<"c="<<c<<endl;
other();
other();
}
void other()
{
int a(5);
static int b(12);
a+=10;
b+=20;
cout<<"a="<<a<<","<<"b="<<b<<endl;
}
输出的最后一个b为52,为什么不是32?不需要初始化么?

因为在other中b是用static关键字定义的一个静态变量,它不会因为函数调用结束而从内存删除。就是说当第二次调用other的时候b不会被再次定义并赋值为12,而依然是上次的结果32,再加上一个20就变成52啦

static 静态变量 ````程序没关闭之前一直存在的变量

同意一楼看法