有以下程序: #include int*sum(int data) { static int init=1; init+=data; retum&init; } main() { in

admin2016-04-07  19

问题 有以下程序:
    #include
    int*sum(int data)
{
    static int init=1;
    init+=data;
    retum&init;
    }
    main()
    {
    int i,  *p;
    for(i=1;i<=3;i++)sum(i);   
    p=sum(1);
    printf("%d\n",*p);
    }
    程序运行后的输出结果是(    )。

选项 A、8
B、9
C、10
D、7

答案A

解析 static定义一个静态分布变量,变量只会初始化一次。在for函数的循环体中调用sum(i)函数,循环3次,每次都把i值累加在变量init中,再执行i+1操作。因此,退出循环后,init=1+1+2+3=7,返回main()函数再次执行sum(1),此时init=8,把init的地址赋给指针p,输出指针p指向的init的值,答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/StDp777K
0

最新回复(0)