注册 登录
编程论坛 C++教室

求助:指针问题

lian__86 发布于 2010-02-14 16:01, 954 次点击
#include<iostream.h>
void swap(int *p1,int *p2)
{
    int p=0;
    p=*p1;
    *p1=*p2;
    *p2=p;
   
}
main()
{
   
    int a,b;
    int *pointer_1,*pointer_2;
    cin>>a>>b;
    pointer_1=&a;
    pointer_2=&b;
    if(a<b)
        swap(pointer_1,pointer_2);
    cout<<*pointer_1<<" "<<*pointer_2;
}

求高手指点,以上程序为何无法达到交换的效果
9 回复
#2
lintaoyn2010-02-14 19:58
我觉得吧,应该是你输入的a >= b。
#3
cgy19892010-02-15 00:18
main函数下改成swap(&pointer_1,&pointer_2);试一下
#4
cnfarer2010-02-15 19:47
看不出有什么不妥,估计是你输入a, b的问题!(什么情况下不能交换啊?)
#5
yh198801082010-02-18 16:16
在 我 这上面 执行的是 warning This file includes at least one deprecated or antiquated header.
你 换成iostream试试
 在 把 void去掉
 换成 有 返回值 类型的
! 就行了
   
#6
feixiang11062010-03-02 14:32
把if 判断条件删除看看.
不知道是不是你输入的值不符合条件
#7
秀痘魔导士2010-03-02 14:41
代码没问题
#8
长安大学2010-03-03 19:30
*变量指代的是 值,而&变量就对了,把函数里的 *换成&就可以.
#9
psv2010-03-03 20:54
当给函数传值的时候是传值而不是地址,调用函数的时候函数为传的值重新分配空间,这个时候改变的只是新空间中的指针而真实的值是没有改变的
故应该传地址而不是值
#10
新的开始啊2010-03-04 11:13
以下是引用psv在2010-3-3 20:54:33的发言:

当给函数传值的时候是传值而不是地址,调用函数的时候函数为传的值重新分配空间,这个时候改变的只是新空间中的指针而真实的值是没有改变的
故应该传地址而不是值
所以你的函数参数改成int指针的引用类型就可以了:
程序代码:
void swap(int* &p1,int* &p2)
{
    int *p=0;
    p=p1;
    p1=p2;
    p2=p;
   
}

大概就是这个意思。。
1