| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:为什么没有交换
只看楼主 加入收藏
allenz0810
Rank: 2
等 级:论坛游民
帖 子:44
专家分:38
注 册:2012-9-3
结帖率:100%
收藏
 问题点数:0 回复次数:7 
为什么没有交换
# include <iostream>

using namespace std;

void swap (int *p1, int *p2);

int main()
{
    int *pointer_1, *pointer_2, a, b;
    a=45;
    b=78;
    pointer_1=&a;
    pointer_2=&b;
    if(a<b)
        swap(pointer_1,pointer_2);
    cout<<"max="<<a<<"  "<<"min="<<b<<endl;
    return 0;
}
void swap(int *p1, int *p2)
{
    int *temp;
    temp =p1;
    p1=p2;
    p2=temp;
}
为什么 里面的数字 没有交换???
搜索更多相关主题的帖子: include 交换 
2012-09-12 10:11
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
swap(*pointer_1,*pointer_2);

我们都在路上。。。。。
2012-09-12 13:49
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
认真看书 书上说的很明白了。。
2012-09-12 13:50
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
# include <iostream>
 
using namespace std;
 
void swap (int *p1, int *p2);
 
int main()
 {
     int *pointer_1, *pointer_2, a, b;
     a=45;
     b=78;
     pointer_1=&a;
     pointer_2=&b;
     if(a<b)
         swap(pointer_1,pointer_2);
     cout<<"max="<<a<<"  "<<"min="<<b<<endl;
     return 0;
 }
 void swap(int *p1, int *p2)
 {
     int temp;
     temp = *p1;
     *p1  = *p2;
     *p2  = temp;
 }
你交换的是指针指向的空间 并没有改变 a b的实际值啊!所以要用取值操作来改变a b的值的 !!!
2012-09-12 15:12
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
交换下指针所指内容吧

梅尚程荀
马谭杨奚







                                                       
2012-09-13 05:24
allenz0810
Rank: 2
等 级:论坛游民
帖 子:44
专家分:38
注 册:2012-9-3
收藏
得分:0 
回复 3楼 zklhp
你的回答 太好了 请问你有回答吗?
2012-09-15 08:44
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:0 
void swap(int *p1, int *p2)
{
    int *temp;
    temp =p1;
    p1=p2;
    p2=temp;
}
这里错了,你只交换了指针得值,也就是pointer_1和pointer_2的值,但是a b 的值并没有交换
    *temp = *p1;
    *p1 = *p2;
    *p2 = *temp;
即可
或者不用指针
void swap(int p1, int p2)
{
    int temp;
    temp =p1;
    p1=p2;
    p2=temp;
}
这样也可以,当然,你也可以直接按值调用,这样比较.......好
2012-09-15 14:20
春阳
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-9-14
收藏
得分:0 
void swap(int *p1, int *p2)
{
    int *temp;
    temp =p1;
    p1=p2;
    p2=temp;
}        
这个函数的作用只是将p1和p2的地址进行交换,由于这两个参数是形参是不会像实参传递值的(单向的值传递)!
如果想进行值的交换可以进行如下修改:
void swap(int *p1,int p2*)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
2012-09-15 17:01
快速回复:为什么没有交换
数据加载中...
 
   



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

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