有一段C程序如下,执行后,其运行结果为(52)。int f(int a){autoint b = 0;staticint c = 3;b ++; c

17 查阅

有一段C程序如下,执行后,其运行结果为(52)。 int f(int a){ auto 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, ",f(a)); }

A.7,8,9,

B.7,7,7,

C.6,7,8,

D.9,8,7,

参考答案:

A解析:本题考查考生对C语言中动态存储变量和静态存储变量的理解。本题中函数f内的变量b属于动态存储类型,在函数调用开始时分配动态存储空间,函数结束时释放该空间;变量c为静态存储类型,在静态存储区内分配存储单元,在整个运行期间都不释放。在第一次调用f函数时,b的初值为0,c的初值3,第一次调用结束时,b=1,c=4,a+b+c=7,由于c是局部静态变量,在函数调用结束后,它并不释放,仍保留为4。在第二次调用f函数结束时,b=1,c=5,a+b+c=8;在第三次调用f函数结束时,b=1,c=6,a+b+c=9

软考中级