当前位置: 首页 > news >正文

易语言中函数参数“参考”的基本概念

        易语言中函数参数“参考”的基本概念是一个非常核心且重要的特性,理解了它就能更好地控制程序中的数据流。

■ 一、基本定义

        参考,在易语言中,相当于其他编程语言(如C++、C#)中的 “引用传递”。

        它的核心作用是允许被调用的子程序(函数)修改调用者(父程序)中传递进来的原始变量。

        换句话说,当你在参数前勾选了“参考”,你传递给这个参数的就不是变量的“值”,而是变量本身的“地址”或“引用”子程序内部对这个参数的任何修改,都会直接反映到外部的原始变量上。

■ 二、通过实例理解:有“参考” vs 无“参考”

        通过一个最简单的交换数值的例子来对比。

▲ 场景1:不使用“参考”(值传递)

        先定义一个子程序 `交换数值_不参考`,它的两个参数 `数值1` 和 `数值2` 都不勾选“参考”。

.子程序 交换数值_不参考

.参数 数值1, 整数型

.参数 数值2, 整数型

.局部变量 临时变量, 整数型

临时变量 = 数值1

数值1 = 数值2

数值2 = 临时变量

然后我们在主程序中调用它:

.子程序 _启动窗口_创建完毕

.局部变量 变量A, 整数型

.局部变量 变量B, 整数型

变量A = 10

变量B = 20

信息框 (“交换前:变量A=” + 到文本(变量A) + “, 变量B=” + 到文本(变量B), 0, , )

交换数值_不参考 (变量A, 变量B)

信息框 (“交换后:变量A=” + 到文本(变量A) + “, 变量B=” + 到文本(变量B), 0, , )

运行结果:

   * 第一个信息框显示:`交换前:变量A=10, 变量B=20`

   * 第二个信息框显示:`交换后:变量A=10, 变量B=20`

结果分析:

        变量A和变量B的值并没有被交换。这是因为在“值传递”方式下,子程序 `交换数值_不参考` 收到的只是 10 和 20 这两个数值的副本。它在内部交换的只是这两个副本,当子程序运行结束,这些副本就被销毁了,外面的原始变量 `变量A` 和 `变量B` 完全没有受到影响。

▲ 场景2:使用“参考”(引用传递)

        现在修改子程序,将两个参数都勾选上“参考”。

.子程序 交换数值_参考

.参数 数值1, 整数型, 参考  ; <- 注意这里勾选了“参考”

.参数 数值2, 整数型, 参考  ; <- 注意这里勾选了“参考”

.局部变量 临时变量, 整数型

临时变量 = 数值1

数值1 = 数值2

数值2 = 临时变量

主程序调用方式不变:

.子程序 _启动窗口_创建完毕

.局部变量 变量A, 整数型

.局部变量 变量B, 整数型

变量A = 10

变量B = 20

信息框 (“交换前:变量A=” + 到文本(变量A) + “, 变量B=” + 到文本(变量B), 0, , )

交换数值_参考 (变量A, 变量B) ; 调用带“参考”的子程序

信息框 (“交换后:变量A=” + 到文本(变量A) + “, 变量B=” + 到文本(变量B), 0, , )

运行结果:

   * 第一个信息框显示:`交换前:变量A=10, 变量B=20`

   * 第二个信息框显示:`交换后:变量A=20, 变量B=10`

结果分析:

        交换成功了!因为使用了“参考”,子程序 `交换数值_参考` 收到的是 `变量A` 和 `变量B` 这两个变量在内存中的地址。所以,子程序内部对 `数值1` 和 `数值2` 的操作,实际上就是直接在对 `变量A` 和 `变量B` 本身进行操作。

三、类比理解

   * 无“参考”(值传递):就像你把一篇文章电子文档复制了一份给别人。别人可以在复制文件上随意修改、删除,但无论他怎么改,你手里的原件都不会有任何变化。

   * 有“参考”(引用传递):就像你直接把这篇电子文档网络分享给了别人。他可以通过这个分享链接直接修改、删除电子文档本身。

■ 四、使用“参考”的注意事项和用途

        1.  目的明确:当你希望一个子程序能够“返回”多个结果时,“参考”参数就非常有用。易语言的子程序只能有一个返回值,但通过使用多个“参考”参数,你可以间接地返回多个值。

           * 示例:一个子程序 `解析字符串`,可以返回一个是否成功的逻辑值,同时通过两个“参考”参数 `输出字符串1` 和 `输出整数1` 来返回解析出的不同部分。

        2.  性能考虑:当传递大型数据结构(如自定义数据类型、数组)时,使用“参考”可以避免复制整个数据所带来的性能开销,因为传递的只是一个地址。

        3.  可空属性:当一个参数被勾选“参考”后,它还可以被勾选“可空”。这意味着在调用时,你可以传递一个空值(`空` 类型)给这个参数。因此勾选“可空”时,子程序内部需要判断参数是否为空,以避免程序崩溃。

        4.  谨慎使用:因为“参考”参数会修改外部变量,所以使用时要非常小心,确保这是你期望的行为,避免产生难以调试的副作用。

■ 总结

特性

无“参考”(值传递)

有“参考”(引用传递)

传递内容

变量的(副本)

变量的地址(引用)

对原变量影响

不会修改原变量

直接修改原变量

性能

对于大型数据,复制开销大

仅传递地址,开销小,效率高

风险

对数据操作仅局限在函数内部

会对外部数据产生直接影响,误操作容易造成损失

主要用途

保护原数据不被意外修改

需要修改原数据或返回多个结果

http://www.dtcms.com/a/537286.html

相关文章:

  • 阿里巴巴国际站的前台网址是西安美食网页设计
  • 制作网站需要怎么做苏州注册公司流程和步骤
  • 云栖实录 | 驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
  • 基层建设是哪个网站的工作总结及工作计划
  • 网站开发学习网站ui设计怎么自学
  • 整站优化工具wordpress joonla安全
  • 在Linux下循环创建N个子进程的实现与解析
  • Spring AI Alibaba 基于JWT的鉴权登录系统实现详解
  • 软件测试(五)--自动化测试Selenium(一)
  • 网站项目开发网站菜单导航制作教程
  • 兰州最好的网站建设公司青岛网站优化排名
  • 某汽车公司4S店携手Acrel-5000建筑能耗管理系统,实现连锁门店能源精细化管理新突破
  • LeetCode 刷题【135. 分发糖果】
  • 专业做网站建设的网站内页产品 首页推荐
  • TCP 流通信中的 EOFException 与 JSON 半包问题解析
  • Garnet技术深度解析:微软研究院出品的高性能缓存存储引擎
  • 如何制作论坛网站网页制作软件是哪个
  • 《从点击到响应:HTTP 请求是如何传出去的》
  • 科技+文化:从“参观游览”到“沉浸共生”的文旅产业革命
  • 做条形图的网站河南郑州网站建设
  • 青少儿机器人技术学什么?
  • 基本魔法语言数组 (一) (C语言)
  • php源码网站修改保定建设厅网站
  • 网站建设访问对象网站开发毕设的需求分析
  • 【实战】自然语言处理--长文本分类(2)BERTSplitLSTM算法
  • Markdown模板20251027
  • Linux命令解释:cp -r --parents用法
  • 关于企业的网站天津做网站找谁
  • 0138. 随机链表的复制
  • 长春网站建设公司seo是什么意思教程