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

形参与实参
形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么
实参即传递给函数对应形参的具体内容

参数传递两种方式–传值&传址
传值方式:将实参的值拷贝给函数或方法,在函数内对形参进行操作,操作的对象是实参的拷贝,对实参本身没有影响,在函数结束返回后,形参被丢弃释放,实参的内容不会被改变
传址方式:将实参的地址传递给函数,在函数内对形参进行操作等同于对实参进行相同的操作,在函数调用结束返回后,形参被释放,实参的内容是对形参进行操作后的结果。
传址又分为:引用传递&指针传递

1 值传递

exchange1(a,b);在调用过程中,函数隐含的把实参a,b的值分别传给了x,y 函数中的操作只是对,xy的操作,没有对a,b 进行任何操作,因此啊,ab的值是不变的。

2 地址传递(指针)


 将ab的地址传递给函数,对*px,*py的操作即是对a,b变量本身的操作。可以实现a,b的值交换

3 引用传递


 仅形式参数的格式与值传递不同,内部定义域调用与值传递完全相同,可以实现ab值得对调

因为在x,y 前有一个取地址符号&,在调用exchang3(a,b)时会用替换x,y,称xy引用了变量ab,在函数内部便是对实参ab进行操作了,函数 内部可以直接修改a,b的值。

引用即对象的别名,传对象的引用,用于把一个对象的地址作为参数传递过去,而不是对象本身。引用传递,避免了一次实参到形参的拷贝,提高了效率。

1 如果数据对象较小,如内置数据类型或小型结构,则按值传递
2 如果数据对象是数组,则使用指针,并将指针声明为指向const的指针
3 如果数据对象是较大的结构,则使用const指针或const引用,以提高运行效率,以减少复制结构所需要的时间和空间
4 如果数据对象是类对象,则使用const引用,传递类对象参数的标准方式是按引用传递。
   
    如果出现类似的manmin(&x),其中x为int类型的值,那么函数将修改变量x的值。

函数参数传递三种方式(传值方式,地址传递,引用传递)相关推荐

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

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

  2. 函数指针三种定义与使用方式

    文章目录 函数类型剖析 通过什么来区分两个不同的函数? 函数指针(指向函数的指针) 函数指针三种定义方式 函数指针和指针函数的区别: 代码案例 函数类型剖析 通过什么来区分两个不同的函数? 一个函数在 ...

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

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

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

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

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

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

  6. LInux初学者 必学 三种配置网卡IP地址的方式(非常详细)

    弱智选择安逸,强者选择永往向前.本文讲解Linux图形化.shell.命令三种方式配置IP地址静态网卡信息 基础 文章目录 目录 一.IP基础 二.三种网卡配置方式 1.图形化界面 2.nmtui:在 ...

  7. lvs的调度算法有几种_LVS:三种负载均衡方式比较

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  8. 七种Vue3传值方式

    七种Vue3传值方式 props emit v-model refs provide/inject eventBus vuex/pinia(状态管理工具) Props方式 Props方式是Vue中最常 ...

  9. LVS:三种负载均衡方式比较

    1.什么是LVS?   首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具 ...

最新文章

  1. 牛客小白赛190615场
  2. 正则表达式 perl
  3. 日本老爷爷坚持17年用Excel作画,我可能用了假的Excel···
  4. mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常
  5. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
  6. c语言程序改错输入5结果为15,《C语言程序设计教学课件》程序改错(自我总结).doc...
  7. vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
  8. SOA+AIOT=无限可能,上汽零束AIOT沙龙上海站火热报名中启动
  9. linux上安装openssl的步骤
  10. 第一堂TCP/IP课
  11. 在计算机上格式u盘启动,U盘制作dos启动盘几种简单方法
  12. 人工智能——皇帝的新脑还是人类的终结(学习笔记)
  13. uniapp中引入colorUI
  14. 互联网创新创业大赛优秀范例_大学生互联网+创新创业优秀案例选辑.第一辑...
  15. 主机无法Ping通虚拟机
  16. 如何使用REST Assured执行API测试
  17. 专家看台:盛大架构师周爱民回顾职业历程,分享十项建议
  18. 你还不知道钉钉服务端API全局错误码吗?
  19. AI新基建沙场点兵,背后是一场“路径之争”
  20. 什么是网站权重以及提升权重的方法

热门文章

  1. 中国科学院计算机院士,中国科学院院士夏培肃:我国计算机领域的先驱者
  2. Python入门到放弃系列一
  3. 支付宝导出资金账单Python脚本文件Demo
  4. 16S预测宏基因组最强R包-Tax4Fun
  5. 浙江台州警方侦破特大制售假酒案 涉案金额超4000万元
  6. 最近一口气发布了6款iOS app
  7. vb.net Encoding类 编码解码
  8. 流媒体解码及H.264编码推流
  9. PHP实现斐波纳契数列
  10. 理解悲观锁乐观锁、同步锁、读锁、写锁