以前我们在C语言中函数参数传递过程中,如果我们想要让当A函数作用域中的变量经过B函数处理之后的数值仍然在A函数中生效,这个时候函数参数的传递时需要引用方式去传递,方式如下:

#include <stdio.h>
//函数参数为指针,通过修改指针里面的内容达到对main中b变量的修改
void func(int *a)
{printf("value is %d \n",*a);*a = 20;
}
int main()
{int b=10;//参数传递的时候传入b变量的地址即可func(&b);printf("from main and b is %d\n",b);return 0;
}

编译运行,结果如下
value is 10
from main and b is 20

C++通同样需要如此,只是语法有部分差异,同时当类的实例作为函数时又会有额外的拷贝构造过程消耗内存,此时需要进行引用传递来减少拷贝构造,通过std::ref进行引用传递。如果进行值传递,之间将定义类类型的变量传入即可。
如下代码:


#include <iostream>
#include <thread>
class Factor{public:void operator()(std::string &a){std::cout << " value is " << a << std::endl;a = " i am changed";}
};int main()
{std::string a = "I am a value ";//C++中兼容C的语法,同时有自己封装的模板库。std::ref用于函数参数传入类类型的引用std::thread t1(Factor(),std::ref(a));t1.join();std::cout << " from main value is " << a << std::endl;                                                                                                                                                                                                                return 0;
}

编译g++ -std=c++11 ref.cc -o ref -lpthread
结果如下
value is I am a value
from main value is i am changed

C++ 函数参数 值传递与引用传递相关推荐

  1. c语言值传递 地址传递 引用传递参数,C++参数传递(值传递,引用传递)

    值传递 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 在函数结束返回后,形参被丢弃释放,实参的内容不会被改变 数据值传递和地址值传递 数 ...

  2. c语言中的值传递和地址传递参数,c语言值传递,地址传递,引用传递

     c语言值传递,地址传递,引用传递 总结:对于函数来说,值传递就是一个人来了,给你一些数 据,你对数据处理.地址传递就是你通过地址找到一个人,然后直接对这个人处理.而引用传递就是你要直接对一个人进行处 ...

  3. 【重难点】【Java基础 04】值传递和引用传递、序列化和反序列化

    [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 文章目录 [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 一.值传递和引用传递 1.对比 二.序列化 1.基本概 ...

  4. 值传递和引用传递详解

    值传递 敢问何为值传递? 我们通过查询百度百科知道: 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数 通俗来讲,值传递就是将当前参数的值复制 ...

  5. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  6. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...

    函数参数的值传递和引用传递 像我们最熟悉的 C 语言,再写函数参数的同时需要规定函数参数到底是值传递还是引用传递.引用传递导致该参数在函数内的修改出了函数之外也会生效,值传递所有的修改都不会体现到函数 ...

  7. c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...

    函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...

  8. 形参与实参, 值传递与引用传递, ref参数与out参数的区别和联系?

    一. 形参与实参 1.先来一例子: fun(int a) {........} Main () {   int b=0;   fun(b); } 其中,a是形参,b是实参. 2.再看理论定义 形参出现 ...

  9. python是值传递还是引用传递_Python里参数是值传递还是引用传递?

    Python就是把一些参数从一个函数传递到另一个函数,从而使其执行相应的任务.但是你有没有想过,参数传递的底层是如何工作的,原理又是怎样的呢? 实际工作中,很多人会遇到这样的场景:写完了代码,一测试, ...

  10. Javascript 之《函数传参到底是值传递还是引用传递》

    前言 这个问题其实困惑了我好久,但是在实际使用中总是得过且过,不想去深究.由于这种态度,在学习 Javascript 过程中,水平一直都是出于半桶水状态,很多概念和原理似懂非懂,模糊不清. 所以,写了 ...

最新文章

  1. 修改 ShiroUser 缓存用户
  2. Android系统中的进程管理:进程的创建
  3. screen常用命令以及screen恢复会话时出现There is no screen to be resumed matching
  4. AngularJs ng-repeat限制循环次数
  5. java获取method,2.5 反射——Class对象功能_获取Method
  6. 今日恐慌与贪婪指数为70 贪婪程度有所缓解
  7. java exec dir的例子_java.lang.Runtime.exec(String[] cmdarray, String[] envp, File dir)方法实例...
  8. 苏宁:我们开发百度小程序遇到的那些“坑”
  9. 老板要我开发一个简单的工作流引擎 !
  10. 【狂神说Redis】3五大数据类型
  11. mongodb python 存文件_Python小课堂MongoDB(1)
  12. 如何破解HIT的孤岛效应,一起关于患者主索引的案例分享
  13. 计量经济学搭建模型总结
  14. 深度学习之蛋白质二级结构预测
  15. 什么时候可以用到强化学习?强化学习怎么用?
  16. AI实战:目标检测模型应用之生活垃圾图片分类
  17. 仿京东左侧菜单弹出html代码,一个类似京东网页左侧菜单扩展的特效代码
  18. PMP第三章:项目经理的角色
  19. 详细说明VScode设置中文,主题更改,文件图标及字体设置
  20. 洛谷P2455 [SDOI2006]线性方程组

热门文章

  1. 丽水风光(二)—劫色“古堰画乡”
  2. 《OpenCV3编程入门》学习笔记6 图像处理(三)形态学滤波(1):腐蚀与膨胀
  3. OpenCV+python:顶帽、黑帽、形态学梯度
  4. linux 任务计划 权限设置,Linux系统 文件权限+计划任务+日志系统
  5. python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法
  6. Linux数组计算平均值,从数组中读取并计算平均值
  7. mysql query browswer_MySQL数据库新特性之存储过程入门教程
  8. stk 坐标系_STK学习-坐标系
  9. 大数据概念思维导图_思维导图|数据化风控(信用评分建模教程)
  10. mysql触发器菜鸟_mysql触发器学习