博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++参数传递的三种方式
阅读量:6260 次
发布时间:2019-06-22

本文共 898 字,大约阅读时间需要 2 分钟。

一般来说C++中参数传递有三种方式:值传递、指针传递、引用传递

1.值传递——传值

值传递是最常见的一种参数传递的方式,但是对初学者来说也最容易出错。如下例:

  1. #include<iostream.h>  
  2. void fun(int a,int b)  
  3. {  
  4.     int temp;  
  5.     temp=a;  
  6.     a=b;  
  7.     b=temp;  
  8. }  
  9. void main()  
  10. {  
  11.     int m,n;  
  12.     m=1;  
  13.     n=2;  
  14.     fun(m,n);  
  15.     cout<<m<<""<<n<<endl;       //输出结果为 12  
  16. }  

例子中fun()函数采用值传递的方式,传入的实参实际上是m、n的副本而非其本身,所以对副本的改变并不会反映到m、n本身上。

2.指针传递——传指针

使用指针传递需要先了解一下指针的有关概念,因为这里主要介绍关于参数的部分,所以废话不多说了,直接看例子:

  1. #include<iostream.h>  
  2. void fun(int * x)  
  3. {  
  4.     *x+=10;  
  5. }  
  6. void main()  
  7. {  
  8.     int n=0;  
  9.     fun(&n);  
  10.     cout<<n<<endl;      //输出结果为 10  
  11. }  

fun()函数体内的x是指向外部变量n的指针,改变指针的内容将导致n的值得改变,所以n的值成为了10。

3.引用传递——传引用

引用相当于别名(绰号),比方说有人的名字是王小丽,她的绰号是“小小”。如果有人说“小小”几岁,实际上就是指王小丽几岁。

  1. #include <iostream.h>  
  2. void main()  
  3. {  
  4.     int x;  
  5.     int &y=x;   //变量引用  
  6.     y=99;  
  7.     cout<<"x="<<x<<endl;  //输出结果为 x=99  
  8. }  

程序中&y=x应当理解为y具有x的地址,即x与y具有相同的地址,地址相同了当然内容也相同了,所以y的值是99。

比较:

       对比参数的三种传递方式,可以发现“引用传递”和“指针传递”的性质一样,而书写方式像“值传递”。引用传递可以做的任何事指针也能够做到,因为指针能够毫无约束地操作内存中的东西,这种强大的功能背后也必将隐藏着巨大的危险,所以慎用指针。

 

剑指offer上判断平衡二叉树用的就是指针传递

转载地址:http://yxqsa.baihongyu.com/

你可能感兴趣的文章
python设计模式-外观模式
查看>>
NEO学习笔记,从WIF到地址
查看>>
C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?
查看>>
绿色应用达标报告发布,47%主流应用未通过安全标准
查看>>
Spring Boot工程集成全局唯一ID生成器 UidGenerator
查看>>
JS之原型与原型链
查看>>
大话 JavaScript 动画
查看>>
[case43]聊聊storm的LinearDRPCTopologyBuilder
查看>>
[LeetCode] 674. Longest Continuous Increasing Subsequence
查看>>
从观察者模式到手写EventEmitter源码
查看>>
当你在浏览器里输入一个url发生了什么?
查看>>
React入门0x007: 生命周期概念
查看>>
webpack调优总结
查看>>
Springboot对多线程的支持详解
查看>>
Sublime text3修改tab键为缩进四个空格
查看>>
「Do.008」Android 实战项目(3)——Git 分支管理模型
查看>>
原生js中Object.keys方法详解
查看>>
Webpack 4.X 从入门到精通 - plugin(二)
查看>>
Elasticsearch的搜索类型(SearchType类型)
查看>>
Java知识点总结(JDBC-大文本对象的使用)
查看>>