C语言。用指针找出3个数的最大与最小,我错在哪里哦?求指教!

voidfilter(float*p1,float*p2,float*p3,float*m,float*n){if(*p1>*p2){m=p1;n=p2;}else{m=... void filter(float *p1,float *p2,float *p3,float *m,float *n)
{
if(*p1>*p2)
{
m=p1;
n=p2;
}
else
{
m=p2;
n=p1;
}
if(*m<*p3)
m=p3;
if(*n>*p3)
n=p3;
}
展开
 我来答
wood_zhq
2012-12-19 · 超过10用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:31.5万
展开全部
m=p1;
n=p2;
你的原意交换地址,按你这个函数交换内容就好了,不用那么复杂,即
*m=*p1;
*n=*p2 ,下面也一样。
按你的写法对于地址只是值的传送,值的改变无法改变形参的实际内容。

如要交换地址,参考:
void filter(float *p1,float *p2,float *p3,float **m,float **n)
需要传地址的地址,注意到两个星号没有,里面这样写。
*m=p1;
*n=p2
hushengqq4212
2012-12-19 · TA获得超过105个赞
知道答主
回答量:68
采纳率:0%
帮助的人:32万
展开全部
m=p1;
n=p2
你这是把p1p2 的地址赋值给mn
*m=*p1;
*n=*p2;
应该这样吧 下面一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛XX的小99
2012-12-19 · TA获得超过6377个赞
知道小有建树答主
回答量:3661
采纳率:37%
帮助的人:1249万
展开全部
m,n的内存地址是不能改变的.
if(*p1>*p2)
{
*m=*p1;
*n=*p2;
}
else
{
*m=*p2;
*n=*p1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友667d7fd
2012-12-19 · TA获得超过145个赞
知道答主
回答量:198
采纳率:35%
帮助的人:37.6万
展开全部
m n没定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式