#include <iostream>
using namespace std;
void swap(int x, int y)
{
int z=x;
x=y;
y=z;
}
int main()
{
int a,b;
a=3;
b=4;
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
swap(a,b);
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
return 0;
}2.按址传递:
#include <iostream>
using namespace std;
void swap(int *x, int *y)
{
int z=*x;
*x=*y;
*y=z;
}
int main()
{
int a,b;
a=3;
b=4;
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
swap(&a,&b);
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
return 0;
}因为C++中有了指针的概念,所以在讲述按值/按址传递函数参数比其他语言(VB使用ByRef关键字、C#使用ref关键字)好理解多了,按值传递的是副本,按址传的是内存地址。但是,使用指针,swap函数中有的变量有星号,有的变量没星号,很容易就弄混输错了,我们可以改用别名传递来实现同样的效果:
#include <iostream>
using namespace std;
void swap(int &x, int &y)
{
int z=x;
x=y;
y=z;
}
int main()
{
int a,b;
a=3;
b=4;
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
swap(a,b);
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
return 0;
}swap函数的形参是实参的别名,别名等同于原本的变量,不再是副本,因而也能实现按址传递的效果,并且代码也变简单多了。
评论(0)
暂无评论。