- 直接通过中间变量交换,不使用函数
#include<iostream>
using namespace std;
int main()
{
int i=1,j=3,temp;
temp=i;
i=j;
b=temp;
cout<<a<<b;
//输出结果为 i=3 j=1
2.将语句封装成函数,函数没有形参,直接操作全局变量
#include<iostream>
using namespace std;
int i=1,j=3;
int main()
{
int swap();
swap();
cout<<i<<""<<j<<endl;
return 0;
}
int swap()
{
int temp;
temp=i;
i=j;
j=temp;
}
//输出结果 3 1
4.(常见错误方法)值传递 企图通过形参a和b的值互换,来实现实参i和j的值互换
#include<iostream>
using namespace std;
int main()
{
void swap1(int ,int);
int i=1,j=3;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap1(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
//输出结果 i=1 j=3
- 分析
5.通过指针变量做形参 实现变量的值互换 即地址传递
在C语言中都是采用这种方式。因为C语言没有下面的第六种方式。
#include<iostream>
using namespace std;
int main()
{
void swap2(int *,int *);
int i=1,j=3;
swap(&i,&j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap2(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
//输出结果 i=3 j=1
- 分析
6.通过引用形参实现两个变量的互换
(这里的&a不仅是a的地址,而是指a的一个引用型变量)
在C++中用这种方式比较多。
#include<iostream>
using namespace std;
int main()
{
void swap3(int &,int &);
int i=1,j=3;
swap3(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
int swap3(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
//输出结果 i=3 j=1
- 分析
最后这种觉得是最好的