|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于值得交换(为什么)
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
662
人关注过本帖
标题:
关于值得交换(为什么)
只看楼主
加入收藏
wangchaowushang
来 自:陕西
等 级:
新手上路
帖 子:61
专家分:0
注 册:2007-12-19
楼主
收藏
问题点数:0 回复次数:5
关于值得交换(为什么)
main()
{
int a,b;
printf("a=%d,b=%d\n",a,b);
swap(a,b)
printf("after swap\t a=%d,b=%d",a,b);
}
swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
为什么这样做a,b的值没有发生交换?
2008-03-20 11:56
举报帖子
使用道具
赠送鲜花
广陵绝唱
等 级:
贵宾
威 望:
29
帖 子:3607
专家分:1709
注 册:2008-2-15
第
2
楼
收藏
得分:0
这是关于函数的形参与实参与返回值的问题。函数的值传递是单向的,实参只能传递值给形参,形参不能传递值回实参,只能以返回值的形式传递给主调函数一个值。
如果想交换两数值,最好用指针,那样就可以交换成功了。如果还不想用指针,就不要用交换函数,直接在主函数里面交换,就可以了。
2008-03-20 12:03
举报帖子
使用道具
赠送鲜花
xianshizhe111
等 级:
新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
第
3
楼
收藏
得分:0
传递的并非同一段地址,也就是单向传递.
/*这样就改变了*/
#include<stdio.h>
main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("after swap\t a=%d,b=%d",a,b);
}
swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
2008-03-20 12:10
举报帖子
使用道具
赠送鲜花
斜阳牧笛
等 级:
新手上路
帖 子:1
专家分:0
注 册:2008-3-16
第
4
楼
收藏
得分:0
在调用涵数中变量改变了,即只在此处交换值,回到主涵数新值会丢失而重新使用旧值.
2008-03-20 12:31
举报帖子
使用道具
赠送鲜花
linpeng007
等 级:
新手上路
帖 子:3
专家分:0
注 册:2007-5-22
第
5
楼
收藏
得分:0
[bo]以下是引用 [un]xianshizhe111[/un] 在 2008-3-20 12:10 的发言:[/bo]
传递的并非同一段地址,也就是单向传递.
/*这样就改变了*/
#include
main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("after swap\t a=%d,b=%d",a,b);
}
swap(int *x,i ...
顶,相当好,指针就是灵活
2008-03-20 12:57
举报帖子
使用道具
赠送鲜花
hoodlum1980
来 自:浙江大学
等 级:
论坛游民
威 望:
2
帖 子:289
专家分:23
注 册:2008-2-24
第
6
楼
收藏
得分:0
你交换的只是栈上参数。
2008-03-20 14:25
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
关于值得交换(为什么)
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016754 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved