A-A+
有以下程序 yoidfun(double*p1 double*p2 double*S) {
问题详情
有以下程序 yoidfun(double*p1,double*p2,double*S) { S=(double*)calloc(1,sizeof(double)); *S=*pl+*(p2+1);) main(){ doublea[2]={1.1,2.2},b[2]={10.0,20.0},*s=a; fun(a,b,S); printf(%5.2fin,*s);) 程序的输出结果是
A.1.10
B.11.10
C.12.10
D.21.1
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:A
ANSIC标准规定calloc函数返回值的类型为void*。具体使用格式为:calloc(n,size)。该函数用来给n个同一类型的数据项分配连续的存储空间,每个数据项的长度为size个字节。若分配成功,函数返回存储空间的首地址;否则返同空。通过调用calloc函数所分配的存储单元,系统自动置初值0。土函数中定义数组a,b,以及指针s指向数组a,渊用fun函数,实参a和b,以及s的值传递给相对应形参p1,p2,以及s,在fun函数中更改s的指向,以及指向的数据,但是函数调用结束以后,形参空间撤销,这项改变对于实参没有影响,因此实参s指向值不变,仍然为1.1。