问题:编写函数实现两个变量值互换(引用方式调用)

1.传地址


void swap(int *a,int *b){  //传送变量的指针int temp = *a;*a = *b;*b = temp;  //*是取地址的数据
}

调用时把变量的地址传进来(swap(&i,&j)),进来后指针变量和变量就为同一个内存单元。

2.传变量的别名

void swap(int &a,int &b){  //变量的引用为形参int temp = a;a = b;b = temp;
}

调用时,把变量传进来给函数的引用变量(swap(i,j) ),即形参成为实参的一个引用。

3.其实,初学者最容易犯的一个错误就是直接传值:

void swap(int a,int b){ //这种叫传值调用int temp = a;a = b;b = temp;}

总结:

在C++中调用函数时有两种传递数据的方式:1、2是直接把实参地址传给形参,这时形参和实参是同一个变量!这叫引用方式调用

3是把实参的值传给形参,形参是实参的一个拷贝!叫传值方式调用


那么1和2有啥子区别呢?

1传递地址给指针变量来实现时要另外开辟内存的(指针变量开辟了内存,存的内容时某个变量的地址),而2中的引用只是变量的别名,不另外占内存单元!!

引用比指针直观、方便。。。

C++引用实现函数传递数据相关推荐

  1. vue.js 组件之间传递数据

    前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...

  2. C++中,引用作为函数参数

    引用作为函数参数 C++之所以增加引用类型, 主要是把它作为函数参数,以扩 充函数传递数据的功能. -------------------- c++,函数传参: (1)将变量名作为实参和形参.这时传给 ...

  3. 主线程是如何向子线程传递数据的?_c++ 利用thread创建线程

    用进行多线程开发 小时候,老师总是教育我们上课要专心,"一心不可二用".可是CPU这个不听话的"熊孩子"偏偏却在一个芯片中加入了两个甚至多个运算核心,想要一&q ...

  4. vue.js 组件之间传递数据 1

    vue.js 组件之间传递数据 框架 浏览数:437 2017-8-21 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据 ...

  5. 子组件向父组件传递数据_如何将元素引用向下传递到角度的组件树中

    子组件向父组件传递数据 I recently had a requirement to make sure a PrimeNG Dropdown panel inside a modal with s ...

  6. C++ const关键字的总结(全局/局部变量、修饰指针和引用、成员函数和数据成员、修饰类对象、const与宏定义的区别、Static与Const的区别)

    const关键字 const关键字 1.什么是const 2.使用原理 2.1.const全局/局部变量 2.2.cosnt修饰指针和引用 2.3.const修饰函数参数 2.4.const修饰函数返 ...

  7. 单片机怎么用回调函数在不同文件之间传递数据

    大家好,我是无际. 今天继续来聊下回调函数. 之前写过一篇受到了广大老铁们的认可. 最近有几个新学员被回调函数搞得有点懵逼. 不理解为什么要搞这种绕来绕去.指针指来指去的函数. 先写篇文章预热一下,晚 ...

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

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

  9. excel引用指定单元格数据_Excel数据查找引用函数详解,一看就会用 #办公技巧 #excel #职场

    Lookup函数 简介:在查找区域中搜索查找对象,并映射到结果区域,返回相同位置的值 Lookup函数 =LOOKUP(D2,A2:A6,B2:B6) 结果将找出与产品编号为1003相对应的产品名称 ...

最新文章

  1. ionic4中使用Swiper触屏滑动--技术
  2. 百度UEditor开发案例(JSP)
  3. 根据HTML5 获取当前位置的经纬度【百度地图】【高德地图】
  4. 开源导入导出库Magicodes.IE 多sheet导入教程
  5. 实现.Net程序中OpenTracing采样和上报配置的自动更新
  6. 从事java编程技能要求_5道Java视频课程,提高您的编程技能
  7. Flash位图锯齿的处理办法
  8. opencv-python 鼠标事件和坐标点截图
  9. SQL SERVER2017 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式...
  10. 用window.showModalDialog()实现DIV模式弹出窗口
  11. 蓝宝石会升级bios吗_蓝宝石主板bios设置教程
  12. 数据库添加字段sql语句
  13. 金融壹账通拟7月4日香港上市:2年亏近30亿 市值蒸发超90%
  14. 醒了自悟系列--千年老妖---1000后的重生---重新脚踏实地
  15. uni-app实现上传照片和个人信息
  16. Linux 安装NDK
  17. 开发者必须mark的一款2D移动游戏开发工具
  18. linux内核网络收包过程—硬中断与软中断
  19. 电子商务的发展现状与趋势分析
  20. 【Flutter实战 BLoC模式 RxDart Provider模式】

热门文章

  1. RSA共模攻击(包括原理)
  2. C# WinForm创建Excel文件
  3. NVT平台PWM配置
  4. Scrum的七宗罪和其他的敏捷反模式
  5. 升级了鸿蒙资料还在吗,手机升级更新鸿蒙系统会清空数据吗?华为鸿蒙升级需要备份吗...
  6. 爱因斯坦场方程之Reissner-Nordstrom(电磁真空)解
  7. visual basic VB.NET实例系列教程第一节(简单实用抽奖程序)
  8. 云南师范大学文理学院计算机专业怎么样,云南师范大学文理学院宿舍怎么样
  9. Alphafold2:Highly accurate protein structure prediction with AlphaFold
  10. Java 集合深入理解(12):古老的 Vector