C++函数传递参数的方式主要有三种:传值、传引用、传指针,三者可以在声明中看出来区别。
-
传值
当不需要修改传递的参数值时,使用传值。此类情况最多,也最安全,形如double function(int a,int b);//传值函数声明 int x,y; double result=function(x,y);
此时传入函数的只是参数的副本,无论是怎么操作,外部原参数的值不会改变。
-
传引用
引用是“别名”,因此还是参数本身,不过是参数多了个别名,参数有了两个名字。例如声明引用int a=10; int &b=a; //此时b是a的别名,是同一个参数,修改b就是修改a
当需要对参数值进行修改时,则可以传引用,这时传入参数的别名,是同一个参数,修改的话自然原参数的值也就变了,形如
注意此时&
是引用并不是地址运算符,这是个运算符的重载double function(int &a,int &b);//传引用函数声明 int x,y; double result=function(x,y);//使用函数时看不出来是引用,只能从函数声明和定义中看出来是传引用
-
传指针
传指针
是传入的参数的地址
,所以在函数内部是能用指针解除引用*
来使用参数,直接在原地址修改参数,自然也能改变原参数的值,形如double function(int *a,int *b)//*说明是指针变量 { double c; c = *a + *b; return c; };//传指针函数声明 int x, y; double result=function(&x, &y);//此时的&是地址运算符