C\C++中函数参数的三种传递方式

转自:https://www.cnblogs.com/tanjuntao/p/8678927.html

还是看原文的格式更舒服些

一、值传递

这种传递方式中,实参和形参是两个不同的地址空间参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。

二、引用传递

这种传递方式中,形参是引用类型变量,其实是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作。整个被调用函数对形参的操作执行完毕后,原先的实参的值也会发生改变

三、指针传递

这种传递方式中,实参是变量的地址{swap(&a,&b);},形参是指针类型的变量。在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作。整个被调用函数对形参的操作执行完毕后,原函数中的变量的值将会发生改变

代码如下:

  1. #include<iostream>

  2. using namespace std;

  3.  
  4. //值传递 交换前a=1,b=2;交换后a=1,b=2;

  5. void swap(int a,int b){

  6. int temp=a;

  7. a=b;

  8. b=temp;

  9. }

  10.  
  11. //引用传递 交换前a=1,b=2;交换后a=2,b=1;

  12. void swap(int &a,int &b){

  13. int temp=a;

  14. a=b;

  15. b=temp;

  16. }

  17.  
  18. //指针传递 交换前a=1,b=2;交换后a=2,b=1;

  19. void swap1(int *a,int *b){

  20. int temp=*a;

  21. *a=*b;

  22. *b=temp;

  23. }

  24.  
  25. //主函数

  26. int main(){

  27. int a=1;

  28. int b=2;

  29. cout<<"交换前"<<endl;

  30. cout<<"a="<<a<<endl;

  31. cout<<"b="<<b<<endl;

  32. swap(a,b);//值传递和引用传递

  33. swap1(&a,&b);//指针传递

  34. cout<<"交换后"<<endl;

  35. cout<<"a="<<a<<endl;

  36. cout<<"b="<<b<<endl;

  37. return 0;

  38. }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值