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

来源:互联网 发布:阿里云服务器客服电话 编辑:程序博客网 时间:2024/06/09 19:00

先贴一段代码,

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是引用传递函数。

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

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

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

 

原创粉丝点击