求助c语言问题,求详解

来源:百度知道 编辑:UC知道 时间:2024/09/21 11:15:48
#include<stdio.h>
void fun(float *p1,float*p2,float *s)
{
s=(float*)calloc(1,sizeof(float));
*s=*p1+*(p2++);
}
void main()
{
float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);
printf("%f\n",*s);
}

调用函数fun不能改变s的值

也就是说,s仍然指向a数组的开始,所以会输出a数组的第一个值

为什么呢?
因为函数调用的时候, s = calloc..., *s- *p....
这里其实不是对s指针本身的修改,而是付给了一个该参数的副本

具体为啥,我也就不多做解释了