形参引用
*是去引用运算符,或称之为间接引用运算符
首先看一下 普通形参
int add1(int a) { return a+1; } void main() { int num = 10; int num2; num2 = add1(num); }
在这种情况下,num的值不会因为调用了add1而改变,即实参的值不变。
再来看一下 指针参数
void add2(int *p) { *p +=1; } void main() { int num1; add2(&num1); }
使用指针做为函数的形参,指针的值(即&num1)不会因为*p+=1而受到影响,但是&num1这个地址里存放的值(num)增加了1。所以要想修改实参的值,可以使用指针形参的方法。
但是还有一种更安全更自然的方法-引用形参
引用形参的格式如下面函数所示:
void swap(int &a,int &b) { int temp=a; a=b; b=temp; }
如果在主函数中调用swap()函数:
void main() { int x = 10, y = 20; swap(x,y); }
那么实参x和y的值会被调换过来,也就是说如上所写的引用形参会修改实参的值。
如果不想修改实参的值,应该加上const,如下面例子所示。
void swap(const int &a,const int &b)
引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。


浙公网安备 33010602011771号