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

admin2009-02-01  26

问题 有一段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。所以,该段C程序执行后,运行结果为“7,8,9,”。
转载请注明原文地址:https://jikaoti.com/ti/OmI7FFFM
0

最新回复(0)