有以下程序 #include <stdio.h> #include <stdlib.h> void fun( double *p1, double *p2, double *s ) { s=( double* )calloc( 1,size

admin2020-11-27  20

问题 有以下程序
#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、有运行错误
B、输出11.10
C、输出12.10
D、输出21.10

答案A

解析 calloc(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。s在函数fun()申请了内存空间,但是在调用fun()函数后会释放掉,因此,最后q指向NULL,因此运行是打印出错。答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/CuD0FFFM
0

随机试题
最新回复(0)