C语言函数
f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是()。main(){int...
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是( )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
} 展开
{int b=0;
static int c=3;
b++; c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是( )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
} 展开
4个回答
展开全部
结果如下:
7
8
9
为什么?因为,你在定义C时,用static定义为静态变量,当用static定义时,此局部内有效,全局也是有效的,就是在这个函数结束时,C变量的内存空间没有被释放掉,会保存到main函数结束时才释放它。而且static定义的变量,只会初始化一次,不管你调用它几次,他只会初始化一次。所以每调用这个函数一次,c的值氷就往上加一次。而b变量是非静态变量,所以调用一次就会初始化一次,每结束一次该函数,b变量内存的空间都会被释放掉,以供另外一些新变量或新扩展容量的变量使用。
第一次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=4(执行到return (a+b+c);时,c得值),return(a+b+c)=2+4+1=7。
第二次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=5(执行到return (a+b+c);时,c得值),return(a+b+c)=2+5+1=8。
第三次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=6(执行到return (a+b+c);时,c得值),return(a+b+c)=2+6+1=9。
此时循环结束,输出的结果就为:7 8 9
7
8
9
为什么?因为,你在定义C时,用static定义为静态变量,当用static定义时,此局部内有效,全局也是有效的,就是在这个函数结束时,C变量的内存空间没有被释放掉,会保存到main函数结束时才释放它。而且static定义的变量,只会初始化一次,不管你调用它几次,他只会初始化一次。所以每调用这个函数一次,c的值氷就往上加一次。而b变量是非静态变量,所以调用一次就会初始化一次,每结束一次该函数,b变量内存的空间都会被释放掉,以供另外一些新变量或新扩展容量的变量使用。
第一次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=4(执行到return (a+b+c);时,c得值),return(a+b+c)=2+4+1=7。
第二次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=5(执行到return (a+b+c);时,c得值),return(a+b+c)=2+5+1=8。
第三次循环:a=2,b=0(执行c++;语句之前b的值),b=1(此时是执行完了b++;在执行c++时b的值),c=6(执行到return (a+b+c);时,c得值),return(a+b+c)=2+6+1=9。
此时循环结束,输出的结果就为:7 8 9
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询