| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:C预言的一个函数调用问题
只看楼主 加入收藏
川蜜
Rank: 2
等 级:论坛游民
帖 子:15
专家分:30
注 册:2010-4-20
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:2 
C预言的一个函数调用问题
#include<stdio.h>

void sub(float x,float *y,float *z)
{
*y=*y-1.0;
*z=*z+x;
}
main()
{
float a=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pa);
printf("%f\n",a);
getch();
}
为什么结果是8啊。。请高手解释下,尽量详细,sub(b-a,pa,pa)这句话的结果是怎样的,结果a=8是怎么得到的??
搜索更多相关主题的帖子: 函数 预言 
2010-08-24 18:35
flyingcat
Rank: 4
来 自:HDU
等 级:业余侠客
威 望:2
帖 子:55
专家分:230
注 册:2010-7-18
收藏
得分:8 
sub(b-a,pa,pa);
楼主你用的这儿是两个pa
然后看sub函数
*y 等于*z 等于 2.5   x等于9.0-2.5等于6.5
*y=2.5-1.0;
所以这时
*z等于*y等于1.5
*z = *z + x;
所以*z 等于*y等于1.5+6.5等于8.0
最后输出a,就是8.0
2010-08-24 18:43
mwebc
Rank: 2
等 级:论坛游民
帖 子:9
专家分:13
注 册:2010-7-21
收藏
得分:12 
以下是引用川蜜在2010-8-24 18:35:54的发言:

#include<stdio.h>

void sub(float x,float *y,float *z)
{
*y=*y-1.0;
*z=*z+x;
}
main()
{
float a=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pa);
printf("%f\n",a);
getch();
}
为什么结果是8啊。。请高手解释下,尽量详细,sub(b-a,pa,pa)这句话的结果是怎样的,结果a=8是怎么得到的??

LZ你这写的是sub(b-a,pa,pa);
两个都是pa。
因为这是传址……
所以替换一下就很清楚了
sub(b-a,pa,pa);它也就相等于
*pa=*pa-1.0;\\此时*pa=2.5-1.0=1.5
*pa=*pa+(b-a);\\此时*pa=1.5+6.5=8.0
2010-08-24 21:03
快速回复:C预言的一个函数调用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011243 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved