有以下程序: #include int fun(int a,int b) { static int m=0,i=2; i+=m+1;m=i+a+b; return m: } main()

admin2019-01-11  17

问题 有以下程序:
    #include
    int fun(int a,int b)
    {
    static int m=0,i=2;
    i+=m+1;m=i+a+b;
    return m:
    }
    main()
    {  
    int k=4,m=1,P;
    P=fun(k,m);printf("%d,",P);
    P=fun(k,m);printf("%d\n",P);
    }
    程序运行后的输出结果是(    )。

选项 A、8,17
B、S,16
C、8,8
D、8,20

答案A

解析 static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:调用函数,m=0,i=2,i=i+m+1=3,m=8,返回p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回p=17,故A选项正确。
转载请注明原文地址:https://jikaoti.com/ti/OUa0FFFM
0

最新回复(0)