选择题 38.  有以下程序:
    #include<stdio.h>
    #include<stdlib.h>
    void fun(double *p1,double *p2,double*s)
    { s=(double*)calloc(1,sizeof(double));
    *s=*p1+*p2;
    }
    main()
    { double a[2]={1.1,2.2},b[2]={10.0,20.0},
    *q=NULL;
    fun(a,b,q);
    printf("%5.2f\n",*q);
    }
    程序运行后的结果是______。
【正确答案】 A
【答案解析】 函数calloc(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。函数fun()为变量s申请了内存空间。在调用fun()函数时,传送的是变量q的值,为传值调用,并没有改变指针变量指向的内容,q指向NULL,因此运行会出错。故答案为选项A。