博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数传值与传引用的理解
阅读量:6154 次
发布时间:2019-06-21

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

  hot3.png

在c++里面,调用一个函数的有以下几个过程:

    1. 把父函数的状态入栈。

    2. 系统申请一段内存,当作子函数的栈空间。

    3. 调用子函数参数的拷贝构造函数,新对象压入子函数的栈里。

当然,里面还有很多的过程,这里没有一一细说了。

所以当子函数修改函数参数的值时,父函数内的数值,并没有修改。(因为修改的是拷贝构造后的新对象,并不是原始对象

这就是值传递。

void fun(int b){    b = 10;}int main(){    int a = 5;    fun(a);    // 此时 a = 5;}


当你子函数的参数声明为引用对象时,

3过程就是赋值引用的过程。如:int & b = a;

此时,a和b相当于建立起一种共存亡的关系。(通俗的讲)

把引用b传递到子函数时,在子函数中修改b的值,同时也会修改父函数中a的值。(因为有引用这层关系

这就是传递引用。

void fun(int & b){    b = 10;}int main(){    int a = 5;    fun(a);    // 此时 a = 10;}

转载于:https://my.oschina.net/tzj/blog/336706

你可能感兴趣的文章
mysqldump主要参数探究
查看>>
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题...
查看>>
使用addChildViewController手动控制UIViewController的切换
查看>>
Android Fragment应用实战
查看>>
SQL Server查询死锁并KILL
查看>>
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
Sql日期时间格式转换
查看>>
20个最强的基于浏览器的在线代码编辑器 - OPEN资讯
查看>>
Tesseract——OCR图像识别 入门篇
查看>>
《Java程序性能优化》之设计优化
查看>>
Android源代码下载方法具体解释
查看>>
虚拟机 搭建LVS + DR + keepalived 高可用负载均衡
查看>>
maven 发布到仓库
查看>>
Android实现简单短信发送器
查看>>