C++函数的三种传递方式为:值传递、指针传递和引用传递

值传递:

void fun(int x){x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加了程序运行的时间,降低了程序的效率。}void main(void){int y = 0;fun(y);cout<<\"y = \"<<y<<endl; //y = 0;}

指针传递:

void fun(int *x){*x += 5; //修改的是指针x指向的内存单元值}void main(void){int y = 0;fun(&y);cout<<<<\"y = \"<<y<<endl; //y = 5;}

引用传递:

void fun(int &x){x += 5; //修改的是x引用的对象值 &x = y;}void main(void){int y = 0;fun(y);cout<<<<\"y = \"<<y<<endl; //y = 5;}

1.值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。

2.指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。

3.引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。

效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递,代码逻辑上更加紧凑、清晰。

引用传递做函数参数”是C++的特性,C语言不支持。

带&的是引用型参数,它是地址传递,其实参会随着形参的改变而改变;不带&的参数是一般参数,是值传递,其实参不会随着形参的改变而改变。

注意:指针传递和.引用传递都可以改变参数,但他们的函数调用有所不同,分别是:fun(&y)、fun(y)

C++函数的三种传递方式相关推荐

  1. 函数参数三种传递方式的区别

    函数参数三种传递方式的区别 问题提出: 1.当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileN ...

  2. c语言函数的三种调用方式是什么?

    函数的三种调用方式:1.函数作为表达式中的一项出现在表达式中,例"z=max(x,y)":2.函数作为一个单独的语句,例"printf("%d",a) ...

  3. java光标移动函数_文件内光标的移动 函数基础 定义函数的三种形式 函数的返回值 调用方式...

    # with open(r'a.txt', 'r', encoding='utf-8')as f: # data1=f.read() # print('>1>:',data1) # pri ...

  4. 函数参数传递三种方式(传值方式,地址传递,引用传递)

    函数参数传递三种方式(传值方式,地址传递,引用传递) 形参与实参 形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么 实参即传递给函 ...

  5. JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式

    JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...

  6. c语言函数三种方式,c语言函数的三种调用方式是什么

    函数的三种调用方式:1.函数作为表达式中的一项出现在表达式中,例"z=max(x,y)":2.函数作为一个单独的语句,例"printf("%d",a) ...

  7. javascript函数的三种写法

    在JS中函数的三种写法 [0401] 在js中函数有三种写法,这里我简单列举一下. 第一种: 第二种: 第三种: 对于以上三种函数的调用方法,这里可以简单的理解一下,第一种是最常见的函数写法,第三种是 ...

  8. JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析

    JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析 业务分析 初版的问题 解决方案 传统的 for 循环 不使用 for 循环的解决方案 分析 forEach ...

  9. 【C语言】详解strlen函数 | 模拟实现strlen函数的三种方法 | 写库函数的人是如何实现这个函数的

    前言: 本篇将专门为 strlen 函数进行讲解,总结了模拟实现 strlen 函数的三种方法,并对其进行详细的解析.手写库函数是非常常见的题目,希望通过本篇博客能够加深大家对 strlen 的理解. ...

最新文章

  1. anaconda与python的idle冲突吗_anaconda(python3)与python2共存
  2. OSChina 周六乱弹 —— 老用户与狗
  3. 鼠標滑過表格整行改變背景色
  4. Redis-13Redis发布订阅
  5. maven-约定优于配置
  6. vs为什么打了断点不断_为什么西餐厅里的牛排又嫩又多汁?原来大厨都做了“这一步”...
  7. 如何优雅的设计和使用缓存?
  8. mysql 全文索引
  9. typecho反序列化漏洞复现
  10. 程序返回值的数据结构
  11. 10.一文了解JAVA反射超详尽知乎
  12. C语言之最简单回调demo(五)
  13. 地铁供电系统原理图_地铁供电系统的运行方式及特点分析吴迪原稿(图文高清版)...
  14. libevent核心思想:epoll反应堆模型
  15. Android网速实时显示
  16. CodeCademy | Python | 6. Pyglatin
  17. 七星配资爆量强上攻创业板大阳
  18. Github/gitee 上传文件最大100MB限制this exceeds file size limit of 100.0 MB
  19. 企业如何选择企业网盘
  20. 车辆逆行识别检测系统 opencv

热门文章

  1. Spring Cloud 分布式 微服务 最佳实践之一
  2. 读取properties文件,中文乱码
  3. mybatis3.1-[topic-16-17]-映射文件_增删改查_insert_获取自增主键的值
  4. selenium元素定位之 动态id, class元素定位
  5. 实现用户注册功能---文件保存信息,如果用户名存在就死循环继续
  6. Enterprise Solution 解决方案与源代码下载
  7. Forms Builder常用函数
  8. [C#.Net]判断文件是否被占用的两种方法
  9. 什么是REST?以及RESTful的实现
  10. Linux下redis的安装及用法