下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB过程中使用的参数分为实参和形参,简单的讲,在过程定义中给定的参数是 形参,而在过程调用语句中给定的参数是实参。 当调用一个有参数的过程时,形 参和实参逐一匹配传递,根据传递方式不同,可分为按值和按地址两种。对参数 传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点。一、按值与按地址方式的内涵按值传递参数,实质上是将实参的值复制一份给形参,因此形参获得的是实 参的副本,当过程执行中对形参进行改变,并不会影响实参本身;按地址传递参 数,实质上是将实参变量的地址传递给形参, 因此形参与实参将指向同一内存单 元,当过程执行中形参发生改变时,对应实参也将跟着改变。二、参数传递方式判别
2、方法判断参数传递方式,不能单纯的看过程定义中形参前的修饰限定词有无ByVai。参数传递到底采用何种方式,不仅取决于过程定义,还取决于过程调用, 即与对应实参的具体形式也有很大关系。因此,应该从以下三个方面综合考虑:1. 形参是否为数组或者控件2. 形参前是否有ByVai修饰3. 对应实参是否为表达式或者值具体判别方法,请见如下判别流程图幵始+三、不同传递方式对参数类型的要求若参数按地址传递,则VB要求实参的数据类型与形参的数据类型完全一致;若参数按值传递,则实参数据类型不要求与形参完全一致,但是必须能够由VB默认转化。四、解题应用(一) 以江苏省计算机等级考试2001年春季的一道考题为例:在应
3、用程序中用“ Private Function Fun(X As Integer, Y As Single)”定义 了函数Fun.调用函数Fun的过程中的变量I,J均定义为Integer型,能正确引用函 数Fun的是 Fun (l,J) Call Fun (1,3.65)Fun(3.14,234) Fun( “245” “231.5 ”)A.B.C.D.分析:1. 根据判别流程图,对每个引用做如下判断:对于Fun(l J),实参I与形参X匹配,由于形参X不是数组并且无ByVai 修饰,而实参I为变量,不是值或表达式,因此该参数将按照地址传递;同理, 可以推断实参J与形参Y也将按照地址传递。根据
4、VB要求,按照地址传递的实 参和形参数据类型必须完全一致,而根据题意,J为Integer, Y为Single,因此不正确;对于Call Fun(I,3.65), I与X按地址传递;而实参3.65为值,与形参丫匹 配时,将按值传递,因此正确;对于Fun(3.14,234),虽然实参3.14对应的形参X为Integer,实参234对 应的形参丫为Single,但由于它们都是按照值传递,因此 3.14将转化为3,而2 34可以直接赋给丫,因此正确;对于Fun( “245” “231.5 ”由于实参“245” “231.5均为字符串值,因此其 与对应形参X、丫将按照值传递,而数字字符串是可以转化为数值
5、类型的,因此 正确。综上所述,正确答案为B。2. 对于该题,由于要求是“能正确引用函数 Fun的是”,因此,虽带 括号,并且无Call引导,但却可以通过诸如:Print Fun(3.14,234)加以引用。若 改为:“能正确调用函数Fun的语句是”,则此时不可选,只能选。(二) 以江苏省计算机等级考试2002年春季的一道考题为例:调用由语句Private Sub Convent(Y As Integer)定义的Sub过程时,以下不 是按值传递的语句。A.Call Convent(X)B.Call Convent(X*1)C.Co nve nt(X)D.Co nvent X分析:1. 对于A、B
6、选项,实参分别为(X )和X*1,均为表达式,因此 A、B 选项中的实参将按照值传递;对于 D选项,实参X未用括号引导,此时不可加 Call,因此语句正确,同时,根据判别流程图,实参 X与形参丫必按地址传递。 分析至此,对于该题为单选题,已经可以断定答案是 D。2. 现在考虑C选项语句Convent(X)带括号,但却无Call引导,因此直觉 上似乎不能正确执行。但若我们在 VB代码编辑器中输入该句,回车后,该语句 自动调整为:Convent (X),注意此时Convent与(X)之间有一个空格,因此该句 中的括号是用于X,而不是用于Convent,所以尽管无Call引导但其却能够执行, 此时实
7、参为(X),因此参数将按值传递。所以对于Call Convent(X)和Convent(X), 虽然都能执行,并非是由于Convent(X)前可以省略Call,而在于它们的实参分别 是X和(X),其传递参数的方式自然就不同。(三) 阅读程序写出运行结果:Private Sub Form_Click()Dim x As Integer, y As Integer, z As Integerx = 1: y = 2: z = 3Call sub1(x, y, y)Print x,y,zEnd SubPrivate Sub sub1(x As Integer, y As Integer, ByVal z As Integer)Dim I As Integerx = 3 * z: y = 2 * z: z = x + yPrint x, y, zEnd Sub分析:根据判别流程图知,第一、二参数按地址传递,第三参数按值传递。因此第一、 二形参与对应实参指向同一内存单元
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗机构多学科会诊制度及流程
- 介入治疗技术试题及答案
- 医疗器械企业成本核算制度(试行)
- 气瓶充装运输安全管理制度培训
- 安全环境职业健康目标管理制度培训课件
- 2026年数字孪生城市规划服务合同
- 2026年国际交换生项目合同
- 学校安全管理职责培训:分管领导与部门负责人工作实务
- 2026年315消费者权益日答题题目及答案
- 2026年智慧城市平台开发合同
- 【2026春】部编版八年级下册语文读读写写(注音+解释)
- 第二单元+新音乐启蒙+课件【高效课堂精研】高中音乐粤教花城版必修音乐鉴赏
- 上海2025年上海交通大学医学院招聘72人笔试历年参考题库附带答案详解
- 全国美容院质量与服务调查报告(2023-2024)
- 部编2023版道德与法治六年级下册活动园问题及答案
- 离职证明模板电子版
- GB/T 4308-1984金属陶瓷热挤压模坯
- GB/T 38603-2020燃气燃烧器和燃烧器具用安全和控制装置特殊要求电子控制器
- GB/T 18983-2017淬火-回火弹簧钢丝
- 高效课堂学习小组建设课件
- (新版)中国移动认证L1、L2、L3等级考试总题库-单选题库(共12部分-2)
评论
0/150
提交评论