两个值交换
1.C++特有的方法
#include<iostream>
using namespace std;
intmain()
{
int a,b,c;
a=1;b=2;c=3;
void swap(int&x,int &y); //函数后面要加 ; 分号 !!!
swap(a,b);
swap(b,c);
cout<<a<<b<<c<<endl;
return 0;
}
voidswap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
void swap(int &x,int &y);
这个分号一定要注意!
还有,这个程序是C++特有的,为了防止对底层指针的操作。(用&)
2.通过指针
int main()
{
int a,b,c;
a=1;b=2;c=3;
void swap(int *x,int *y); //函数后面要加 ; 分号 !!!不然会有expectedinitializer before 'int'错误提示
swap(&a,&b);
swap(&b,&c);
cout<<a<<b<<c<<endl;
return 0;
}
voidswap(int *x,int *y)
{
int *t;
t=x;
x=y;
y=t;
}
这个是指针传进来,虽然地址变了,可是还是原来的那个变量指向原来的那个地址
void swap(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
必须要这样才能通过!
但是直接交换整数值也是不行的!!!
void swap(int x, int y) { int t; t = x; x = y; y = t; } | swap(a,b); | 传值调用: a和b的值没有交换,函数调用无效 |