#include<iostream.h>
void func( );
void main( )
{
for(int i=0;i<6;i++)
{
func( );
}
}
void func( )
{
int x=0;
x ++;
static int y=0;
y ++;
cout<<"x="<<x<<";y="&l

程序分析题:阅读程序后,填写程序的正确运行结果。


#include<iostream.h>
void func( );
void main( )
{
for(int i=0;i<6;i++)
{
func( );
}
}
void func( )
{
int x=0;
x ++;
static int y=0;
y ++;
cout<<"x="<<x<<";y="<<y<<endl;
}


【正确答案】:

X=1;Y=1
X=1;Y=2
X=1;Y=3
X=1;Y=4
X=1;Y=5
X=1;Y=6


【题目解析】:

使用static修饰的局部变量是静态局部变量,即定义在块中的静态变量。静态局部变量具有局部作用域,但却具有全局生存期。即静态变量在退出函数后并不消失,所以下次再进入f()时,在这个值上进行累加。

本题中,主函数中调用func()函数,func()函数中,x,y变量均为局部变量,但static修饰的y变量为静态数据成员,不会恢复初始值0,则x每次调用时,x=0。 

因此循环i=0时,x=1,y=1,i=1时,x=1,y=2,.....,i=5时,x=1,y=6结束。


Top