| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1134 人关注过本帖
标题:C语言的一个问题..想不懂
只看楼主 加入收藏
wengdy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-12-27
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:18 
C语言的一个问题..想不懂
void f(int x,int y)
{  int t;
   if(x<y){t=x;x=y;y=t;}
}
void main()
{  int a=1,b=3,c=2;
   f(a,b);f(a,c);f(b,c);
   printf("%d,%d,%d\n",a,b,c);
}


结果是1,3,2

为什么不是3,2,1      
请各个大虾修改下使其输出结果为3,2,1  谢谢

[ 本帖最后由 wengdy 于 2011-1-9 22:44 编辑 ]
搜索更多相关主题的帖子: C语言 
2011-01-09 21:30
aaronhexin
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:199
注 册:2010-12-6
收藏
得分:0 
因为C语言调用函数是传值不传址的,那么你在调用的函数中进行任何改变不会影响到主函数的值
若改为传地址就可以了
2011-01-09 21:40
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:0 
这个问题  实参变形参变量的数据传递是单向传递的 只由实参传给形参 而不能由形参传给实参  
2011-01-09 21:42
wengdy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-12-27
收藏
得分:0 
回复 3楼 xufan123
那要怎么改才行??
2011-01-09 21:48
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
int f(int x,int y)
{  int t;
   if(x<y){t=x;x=y;y=t;}
    return t;
}
void main()
{  int a=1,b=3,c=2;
     printf("%d,%d,%d\n", f(a,b),f(a,c),f(b,c)
);
}


[ 本帖最后由 点线面 于 2011-1-9 22:29 编辑 ]

小代码,大智慧
2011-01-09 21:50
wengdy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-12-27
收藏
得分:0 
回复 5楼 点线面
不行诶...
2011-01-09 21:58
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
再试一下

小代码,大智慧
2011-01-09 22:08
jianghong_02
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:143
专家分:476
注 册:2010-10-2
收藏
得分:0 
这样肯定是不行的,因这你调用 的函数没有返回。
2011-01-09 22:09
wengdy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-12-27
收藏
得分:0 
回复 7楼 点线面
还是不行...
2011-01-09 22:25
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
第一,f(b,c);多了分号,
第二,函数返回居然是void,只能继续改


小代码,大智慧
2011-01-09 22:32
快速回复:C语言的一个问题..想不懂
数据加载中...
 
   



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

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