关于静态变量的一个笔考题
关于静态变量的一个笔试题
最近参加了一场笔试,其中有一个题是这样出的:
int count(int i)
{
static int count=0;
count=count+i;
return (count);
}
int main(void)
{
int i,j;
for(i=0;i<=5;i++)
{
j=count(i);
}
cout<<j<<endl;
return 0;
}
程序最后返回的结果是15,断点调试的时候发现除了第一次执行count函数的时候执行了“static int count=0;”这行代码,其他时候都自动跳过了,这是怎么回事?
------解决方案--------------------
这个就是static 的特性
只有第一次的时候初始化,以后都不在初始化,
------解决方案--------------------
1.静态局部变量在程序开始执行的时候就始终存在,也就是说它的生命期为整个源程序。
2.静态局部变量的生命期虽然为整个源程序,但是其作用域仍与自动变量相同。
3.静态局部变量的初始化是在编译时进行的。在定义时用常量或者常量表达式进行赋值。未赋值编译时系统自动赋值为0
4.静态局部变量具有可继承性。
最近参加了一场笔试,其中有一个题是这样出的:
int count(int i)
{
static int count=0;
count=count+i;
return (count);
}
int main(void)
{
int i,j;
for(i=0;i<=5;i++)
{
j=count(i);
}
cout<<j<<endl;
return 0;
}
程序最后返回的结果是15,断点调试的时候发现除了第一次执行count函数的时候执行了“static int count=0;”这行代码,其他时候都自动跳过了,这是怎么回事?
------解决方案--------------------
这个就是static 的特性
只有第一次的时候初始化,以后都不在初始化,
------解决方案--------------------
1.静态局部变量在程序开始执行的时候就始终存在,也就是说它的生命期为整个源程序。
2.静态局部变量的生命期虽然为整个源程序,但是其作用域仍与自动变量相同。
3.静态局部变量的初始化是在编译时进行的。在定义时用常量或者常量表达式进行赋值。未赋值编译时系统自动赋值为0
4.静态局部变量具有可继承性。