传值,传址和引用传递的区别

先贴一段代码,

void swap_zhi(int v1,int v2)
{
 int temp=v1;
 v1=v2;
 v2=temp;
}

void swap(int *p1,int *p2)
{
 int temp=*p1;
 *p1=*p2;
 *p2=temp;
}

void swap1(int *p1,int *p2)
{
 int *p;
 p=p1;
 p1=p2;
 p2=p;
}

void swap_ref(int &p1,int &p2)
{
 int temp;
 temp=p1;
 p1=p2;
 p2=temp;
}

void main(0

{
    int a1=10;
    int b1=20;
    int *p_1=&a1;
    int *p_2=&b1;
   //swap(p_1,p_2);

   //swap1(p_1,p_2);

   swap_ref(a1,b1);
}

上面,swap_zhi是典型的传值函数,swap和swap1分别是传址函数,和传址函数的对比函数,swap_ref是引用传递函数。

传值函数执行时,实参的值不会变换,只有形参会发生改变。

传址函数执行时,实参的地址不会变,形参的地址改变;但是实参的指向会发生变化,可以实现数据的顺序更改。

引用传递函数执行时,实参和形参都会改变,原因则是由于形参此时只是实参的一个引用,只是一个别名,没有复制的过程,所以引用用来做形参传递参数是效率最高的。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值