大家来看看这个C语言.帮忙说明说明

来源:百度知道 编辑:UC知道 时间:2024/07/16 06:47:40
void fun (float *p1,float *p2,float *s)
{ s=(float*)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
main()
{ float a[2]={1.1,2.2},b[2]={10.0,20.0}, *s=a;
fun(a,b,s);
printf(“%5.2f\n”,*s);
}

这个题目由于不知道s=(float*)calloc(1,sizeof(float));
是做什么用的。所以解答不出。还请高手指教
拜托再把程序分析分析

s=(float*)calloc(1,sizeof(float)); 是为s重新分配一个内存地址;你不要受函数fun的影响,fun不影响到*s的值的改变,因为在fun中,操作的*s是另一个地址,所以你抛开fun函数,只关注主函数的话,那就清楚了,就是求*s,也就是a的值,而a是数组的首地址,求a的值,也即求a[0]的值,当然是1.1了,希望能帮助到你!

初始化指针s 给指针s随即分配一个float类型大小的内存地址……
----
结果不是1.1
应该是21.10