传值,传址和传引用

传值

传值方式:将实参的值拷贝给函数或方法,在函数内对形参进行操作,操作的对象是实参的拷贝,对实参本身没有影响,在函数结束返回后,形参被丢弃释放,实参的内容不会被改变。
c++一条基本原则:在默认情况下,参数只能以值传递的方式给函数,被传递到函数的只是变量的值,永远不会是变量本身。

void exchange(int x,int y)
{
int temp;
temp=x;
 x=y;
  y=temp;}
exch

ange(a,b);在调用过程中,函数隐含的把实参ab的值分别传给了形参xy, 函数中的操作只是对形参的操作,没有对实参进行任何操作,因此,实参ab的值是不变的。

传址

传址方式:将实参的地址传递给函数,在函数内对形参进行操作等同于对实参进行相同的操作,在函数调用结束返回后,形参被释放,实参的内容是对形参进行操作后的结果。
绕开值传递问题的第一种方法指针传递,是向函数传递变量的地址取代它的值。

     
   void exchange(int *px,int *py)
 {
 int temp=*px;
  *px=*py;
   *py=temp;
    }
    int a=4,b=5;
     exchange(&a,&b);

将ab的地址传递给函数,对*px,*py的操作即是对a,b变量本身的操作。可以实现a,b的值交换。

交换
void swap(int *x, int *y)
{ int temp; temp = *x; *x = *y; *y = temp;}
或用异或
void swap(int *x, int *y)
{ *x ^= *y; *y ^= *x; *x ^= *y; }

引用传递

绕开值传递问题的第二种方法引用传递,以引用传递方式传递输入方式,跟传址的目的一样,都是把地址传给函数,但语法不同。

 void exchange(int &x,int &y)
 { 
  int temp=x; 
  x=y; 
  y=temp; 
 } 
  int a=3,b=4;
  exchange(a,b);

仅形式参数的格式与值传递不同,内部定义域调用与值传递完全相同,可以实现ab值得对调。
  因为在x,y 前有一个取地址符号&,在调用exchang(a,b)时会用替换x,y,称xy引用了变量ab,在函数内部便是对实参ab进行操作了,函数内部可以直接修改a,b的值。
  引用即对象的别名,传对象的引用,用于把一个对象的地址作为参数传递过去,而不是对象本身。引用传递,避免了一次实参到形参的拷贝,提高了效率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值