| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1085 人关注过本帖
标题:为什么不能互换
只看楼主 加入收藏
我去哈哈
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2014-10-23
结帖率:60%
收藏
已结贴  问题点数:1 回复次数:10 
为什么不能互换
#include<stdio.h>
#include<conio.h>
int swap(int n,int m)
{
    int t;
    t=n,n=m,m=t;
    return(n,m);

}
int main()
{
    int a=3,b=9;
    printf("a=%d b=%d",a,b);
    getch();

}
搜索更多相关主题的帖子: include return 
2014-11-03 10:18
我去哈哈
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2014-10-23
收藏
得分:0 
请详细说明原因,谢谢
2014-11-03 10:18
酷爱陈阳
Rank: 2
等 级:论坛游民
帖 子:14
专家分:33
注 册:2014-11-1
收藏
得分:1 
回复 楼主 我去哈哈
你用的是C还是C++?不过没关系,你定义了一个函数,但是你在主函数中根本没有用到它,那你定义的这个函数根本没有作用,因为处了数组外,形参的值不能影响实参的值!
2014-11-03 11:10
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:1 
你的swap函数不能实现互换功能,你这是传值调用,要实现互换需要传址调用才行,如:
void swap(int *n,int *m)
{
int tem;
tem = *n;
*n = *m;
*m = tem;
}
至于具体的解释,仔细看看书吧。或者网上搜一下传值和传址调用的区别

[ 本帖最后由 wyw19880809 于 2014-11-3 11:20 编辑 ]
2014-11-03 11:17
徐学贵
Rank: 2
等 级:论坛游民
帖 子:14
专家分:14
注 册:2014-11-3
收藏
得分:1 
你没有调用函数啊
2014-11-03 11:45
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:1 
因为函数一点调用完后,形参就被释放了,所以不可能实现交换,要想交换,有2 中改法:
1.同4楼说的交换指针:但是调用时用swap(&a,&b);
2.不改子函数,只是将子函数的参数前加上&,这是c++方式,但不是很规范;
另外,我总觉得,你的子函数返回两个值,看着很不舒服,要是想返回两个值,可以将他们定义在一个结构体中。你这个问题中,如果用上面的两个方式,不可以把它换成return 0;看着舒服点
2014-11-03 14:31
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:1 
以下是引用soulmate1023在2014-11-3 14:31:57的发言:

因为函数一点调用完后,形参就被释放了,所以不可能实现交换,要想交换,有2 中改法:
1.同4楼说的交换指针:但是调用时用swap(&a,&b);
2.不改子函数,只是将子函数的参数前加上&,这是c++方式,但不是很规范;
另外,我总觉得,你的子函数返回两个值,看着很不舒服,要是想返回两个值,可以将他们定义在一个结构体中。你这个问题中,如果用上面的两个方式,不可以把它换成return 0;看着舒服点

2.不改子函数,只是将子函数的参数前加上&,这是c++方式,但不是很规范;


在C++里面叫引用 但C语言没这东西
2014-11-03 14:37
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 7 楼 zklhp
恩,是,所以我说不是很规范呀,但是用于解决这个问题是可以的
2014-11-03 15:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用soulmate1023在2014-11-3 15:00:21的发言:

恩,是,所以我说不是很规范呀,但是用于解决这个问题是可以的

从C语言变成C++了 如果你觉得这个是【解决】 那就是【可以】啦

做人开心就好嘛
2014-11-03 15:08
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 9 楼 zklhp
嗯,知道了,我还是应该谨慎点的,谢谢~~~
2014-11-03 15:17
快速回复:为什么不能互换
数据加载中...
 
   



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

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