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

Visual Basic 值传递与地址传递

值传递与地址传递

传递参数的方式有两种:如果调用语句中的实际参数是常量或表达式,或定义过程时选用ByVal关键字,就可以按值传递。如果调用语句中实际参数为变量,或定义过程时选用ByRef关键字,就可以按地址传递。

1. 按值传递参数

按值传递参数时,Visual Basic给传递的形参分配一个临时的内存单元,将实参的值传递到这个临时单元去。实参向形参传递是单向的,如果在被调用的过程中改变了形参值,则只是临时单元的值变动,不会影响实参变量本身。当被调用过程结束返回主调过程时,Visual Basic将释放形参的临时内存单元。

当要求变量按值传递时,可以先把变量变成一个表达式,把变量转换成表达式的最简单的方法就是把它放在括号内。例如把变量“A”用括号括起来,“(A)”就成为一个表达式了。或者定义过程时用ByVal关键字指出参数是按值来传递的。

【例5.3  用函数过程编写程序,求a,b两数中最大数。

Max函数为求最大数,在Command1_click中调用Max函数,程序代码如下:

Private Function Max(ByVal x As Integer, ByVal y As Integer)

Dim z As Integer

If x < y Then z = x: x = y: y = z

Max = x

TextX.Text = x

TextY.Text = y

End Function

Private Sub Command1_Click()

Dim a As Integer, b As Integer, c As Integer

a = Val(TextA.Text)

b = Val(TextB.Text)

TextMax.Text = Max(a, b)

TextRA.Text = a

TextRB.Text = b

End Sub

在文本框中输入变量a为25、b为36,单击“计算”按钮,程序运行结果如图5.7所示。

  

图5.7  按值传递运行界面                      图5.8  数据传递过程(按值)

通过函数调用,给形参分配临时内存单元x和y,将实参a和b的数据传递给形参,内存单元的存储值如图5.8所示。在被调函数中x,y和z交换数据,调用结束后,实参单元a和b仍保留原值,参数的传递是单向的。

2. 按地址传递参数

按地址传递参数,是指把形参变量的内存地址传递给被调用过程,形参和实参具有相同的地址,即形参、实参共享一段存储单元。因此,在被调过程中改变形参的值,则相应实参的值也被改变,也就是说,与按值传递参数不同,按地址传递参数可以在被调过程中改变实参的值。系统缺省情况下是按地址传递参数。在传址调用时,实参必须是变量,常量或表达式无法传址。

如果将例5.4求两数中最大数的程序改为按址传递,Max函数的代码如下:

Private Function Max(x As Integer, y As Integer) 

……

End Function

其他程序代码不变。

当输入变量a为25、b为36时,形参与实参的数据传递如图5.9所示。

  

5.9  数据传递过程(按址)              图5.10  按址传递运行结果

由于形参和实参共用同一内存单元,在被调用函数中交换x和y的数值后,a和b的数值也同样发生变化。程序运行结果如图5.10所示。

采用值传递只能从外界向过程传入信息,但不能传出;而采用地址传递则既能传入、又能传出。正是由于不能传出,过程结束后,值传递中形参值变化就不会影响外界的任何量,因而在一定意义上说,值传递比较安全。

值传递和地址传递各有特点,采用哪一种更合适,则视情况而定。一般来说,需要传出参数值时应该用地址传递,否则采用值传递较好。

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

相关文章:

  • html做音乐网站模板网站开发合同范本
  • 当地人做导游的旅游网站产品外观设计用什么软件
  • 站酷网网址银川网站建设哪家好
  • 滦南县建设局网站小程序登录的具体流程
  • 网站建设分享装饰工程 技术支持 东莞网站建设
  • 石家庄seo网站排名网站做强制访问控制
  • 广西建设工程质量监督网站做医院的网站 配色怎么选择
  • 论文精读:《Robot Person Following in Uniform Crowd Environment》
  • 网站平台建立广州做网站哪个公司做得好
  • 美工网站做兼职固安建设行政主管部门官方网站
  • 鸿蒙Harmony实战开发教学(No.6)-Search组件基础到进阶篇
  • 免费网站建设下载网站建设与推广培训学校
  • 重庆模板网站多少钱网页设计与制作课程设计报告小结
  • 如何来做网站优化湖南州省郴州
  • 网站建设公司薪资美工怎么做网站效果图
  • 用Lxml高效解析XML格式数据:以天气API为例
  • 哪些动物可以做网站名代做土木工程专业毕业设计网站
  • 门户网站建设情况简介深圳推广公司哪家正规
  • linux——基本操作指令——下
  • 免费的外贸网站推广方法教育类网站 前置审批
  • 广东集团网站建设杭州富阳建设局网站首页
  • 网站建设需要些什么设备wordpress 底部按钮
  • 建设企业网站的模式帮助中心网站源码
  • 9. 数列
  • 建设区服务网站怎么学做电商然后自己创业
  • 公司如何组建网站网站建设旗帜条幅
  • 网站建设的投资预算怎么写关键词seo排名怎么选
  • 兰州网站seo按天计费医疗公司网站建设项目背景
  • linux学习笔记(36)mysql事务详解
  • 【Linux权限机制深入理解】为何没有目录写权限仍能修改文件权限?