形参引用

*是去引用运算符,或称之为间接引用运算符

首先看一下 普通形参

复制代码
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) 

引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。

posted @ 2014-05-08 11:11  杨帆远航  阅读(246)  评论(0)    收藏  举报