有以下程序 #include <stdio.h> int* sum(int data) { static int init = 1; init += data; return &init; } main( ) {

admin2015-11-24  18

问题 有以下程序
#include   <stdio.h>
int* sum(int  data)
{
    static int  init = 1;
    init += data;
    return  &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,再执行次sum(1),init=8后,把init的地址赋给指针p,输出指针p指向的init的值,答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/GLkiFFFM
0

相关试题推荐
最新回复(0)