C语言中调用函数实参中&的是什么意思?

比如#include<stdio.h>voidsum_diff(floatop1,floatop2,float*psum,float*pdiff);intmain(voi... 比如#include<stdio.h>
void sum_diff(float op1,float op2,float*psum,float*pdiff);
int main(void)
{
float op1,op2,psum,pdiff;
printf("Enter op1 and op2");
scanf("%f%f",&op1,&op2);
sum_diff(op1,op2,&psum,&pdiff);
printf("The intpart is %f",psum);
printf("The fracpart is %f",pdiff);

return 0;
}
void sum_diff(float op1,float op2,float *psum,float *pdiff)
{
*psum=op1+op2;
*pdiff=op1-op2;
}
在sum_diff(op1,op2,&psum,&pdiff)里的psum和pdiff前面的&是什么意思?去掉不行吗?
展开
 我来答
梦醒南天
2016-05-28 · 学习乃进步之根本,创作是快乐的源泉
梦醒南天
采纳数:109 获赞数:361

向TA提问 私信TA
展开全部
&是取地址符,不能去掉,因为去掉了就不符合sum_diff函数的参数类型,sum_diff函数最后两个参数的类型是指针。
sum_diff(float op1,float op2,float*psum,float*pdiff);
追问
那可不可以在前面就定义*psum=&psum,然后把刚刚我说的那里改成*psum呢?
追答
可以把psum定义为指针:float *psum;
但是*psum=&psum是错的,因为&psum是表示psum变量的地址。
还有一个需要注意的问题就是,如果你把psum定义为指针的话,那他是没有空间的,你需要用malloc手动为他开辟一个空间,要不然后面你用来存放(op1+op2
)的值时会导致错误。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式