java里都是按值传递,而c++有按值传递,按地址传递(指针和引用)
#include <iostream>
using namespace std;
void swapByPoint(int *x,int *y);
void swapByRef(int &x,int &y);
int main(){
int x=5,y=10;
cout<<x<<":"<<y<<endl;
swapByPoint(&x,&y);
cout<<x<<":"<<y<<endl;
swapByRef(x,y);
cout<<x<<":"<<y<<endl;
system("pause");
return 0;
}
void swapByPoint(int *x,int *y){
cout<<*x<<":swapByPoint:"<<*y<<endl;
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
void swapByRef(int &x,int &y){
cout<<x<<":swapByRef:"<<y<<endl;
int temp;
temp=x;
x=y;
y=temp;
}
输出如下:
再在此复习下定义引用,int &a = b;就是定义一个引用。可以理解为为原来的变量起个别名。其实,a,b所代表的是同一块内存,只是名字不同。此外,注意按引用传递时请注意,定义函数时 为void com(&d),而在调用时为void com(a);