问题:编写函数实现两个变量值互换(引用方式调用)
1.传地址
void swap(int *a,int *b){ //传送变量的指针
int temp = *a;
*a = *b;
*b = temp; //*是取地址的数据
}
调用时把变量的地址传进来(swap(&i,&j)),进来后指针变量和变量就为同一个内存单元。
2.传变量的别名
void swap(int &a,int &b){ //变量的引用为形参
int temp = a;
a = b;
b = temp;
}
调用时,把变量传进来给函数的引用变量(swap(i,j) ),即形参成为实参的一个引用。
3.其实,初学者最容易犯的一个错误就是直接传值:
void swap(int a,int b){ //这种叫传值调用
int temp = a;
a = b;
b = temp;
}
总结:
在C++中调用函数时有两种传递数据的方式:1、2是直接把实参地址传给形参,这时形参和实参是同一个变量!这叫引用方式调用。
3是把实参的值传给形参,形参是实参的一个拷贝!叫传值方式调用
那么1和2有啥子区别呢?
1传递地址给指针变量来实现时要另外开辟内存的(指针变量开辟了内存,存的内容时某个变量的地址),而2中的引用只是变量的别名,不另外占内存单元!!
引用比指针直观、方便。。。