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

编写一个函数交换两个变量

qin888 发布于 2010-04-05 17:23, 5206 次点击
朋友们,帮个忙!
我想用 按值传递 的方法来做,不知道下面的程序错在哪里,两个变量交换不了

#include<iostream.h>
int main()
{
     void swap(int a,int b);
    int i=8,j=88;
 cout<<i<<" "<<j<<endl;
 swap(i,j);
 cout<<"i="<<i<<" "<<"j="<<j<<endl;
 return 0;
}

void swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
9 回复
#2
书呆2010-04-05 18:03
按值传递不能交换,要传引用
void swap(int &a,int &b)
#3
qq88011032010-04-05 18:13
回复楼上  你的是错的
#4
qq88011032010-04-05 18:14
     void swap(int a,int b);  你这里没有返回直 所以用传直不行 实现不了功能
#5
qin8882010-04-05 18:30
那可以用 指针传递 的方式来做吗,可以的话,要怎么做
#6
qin8882010-04-05 18:31
朋友们,帮个忙!!!
谢谢!!!
#7
llooppzhang2010-04-05 19:06
void sweap(int *a,int *b)
{
   int *tmp;
     *tmp=*a;
    *a=*b;
    *b=*tmp;
}
#8
hahayezhe2010-04-05 19:22
引用  指针 都可以的 或者定义为全局   静态
#9
qin8882010-04-05 19:40
void sweap(int *a,int *b)
{
   int *tmp;
     *tmp=*a;
    *a=*b;
    *b=*tmp;
}
改了以后出现    “0x00401170“指令引用的"0xccccccccc"内存,该 内存不能为 "written"
#10
yyblackyy2010-04-05 19:55
void sweap(int *a,int *b)                    //这是用指针的
{
   int *tmp;                  //这是错的因该把      改成 int tem;
     *tmp=*a;                                            tem=*a;
    *a=*b;
    *b=*tmp;                                             *b=tem;
}

void sweap(int &a,int &b)             // 这是引用的
{
    int tem;
    tem=a;
    a=b;
    b=tem;
}
1