首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > VB > 复习资料 > 正文

计算机二级VB参数传递方式判别与解题应用

      VB过程中使用的参数分为实参和形参,简单的讲,在过程定义中给定的参数是形参,而在过程调用语句中给定的参数是实参。当调用一个有参数的过程时,形参和实参逐一匹配传递,根据传递方式不同,可分为按值和按地址两种。对参数传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点。

一、            按值与按地址方式的内涵

       按值传递参数,实质上是将实参的值复制一份给形参,因此形参获得的是实参的副本,当过程执行中对形参进行改变,并不会影响实参本身;按地址传递参数,实质上是将实参变量的地址传递给形参,因此形参与实参将指向同一内存单元,当过程执行中形参发生改变时,对应实参也将跟着改变。

二、            参数传递方式判别方法

 

    三、不同传递方式对参数类型的要求


  若参数按地址传递,则
VB要求实参的数据类型与形参的数据类型完全一致;若参数按值传递,则实参数据类型不要求与形参完全一致,但是必须能够由VB默认转化。


四、解题应用


  (一) 
以江苏省计算机等级考试2001年春季的一道考题为例:


  在应用程序中用“
Private Function Fun(X As Integer, Y As Single)”定义了函数Fun. 调用函数Fun的过程中的变量I,J均定义为 Integer,能正确引用函数Fun的是____

Fun(I,J)                           Call Fun(I,3.65)

Fun(3.14,234)                  Fun(“245”, “231.5”)

A.①③          B.②③④                     C.①②③                     D.①②③④


  分析:


  1.      
根据判别流程图,对每个引用做如下判断:


  对于①
Fun(I,J),实参I与形参X匹配,由于形参X不是数组并且无ByVal修饰,而实参I为变量,不是值或表达式,因此该参数将按照地址传递;同理,可以推断实参J与形参Y也将按照地址传递。根据VB要求,按照地址传递的实参和形参数据类型必须完全一致,而根据题意,JIntegerYSingle,因此①不正确;对于②Call Fun(I,3.65)IX按地址传递;而实参3.65为值,与形参Y匹配时,将按值传递,因此②正确;对于③Fun(3.14,234),虽然实参3.14对应的形参XInteger,实参234对应的形参YSingle,但由于它们都是按照值传递,因此3.14将转化为3,而234可以直接赋给Y,因此③正确;对于④Fun(“245”, “231.5”),由于实参245”231.5”均为字符串值,因此其与对应形参XY将按照值传递,而数字字符串是可以转化为数值类型的,因此④正确。


  综上所述,正确答案为
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.Convent(X)                             D.Convent X


  分析:


  1.      
对于AB选项,实参分别为(X)和X*1,均为表达式,因此AB选项中的实参将按照值传递;对于D选项,实参X未用括号引导,此时不可加Call,因此语句正确,同时,根据判别流程图,实参X与形参Y必按地址传递。分析至此,对于该题为单选题,已经可以断定答案是D


  2.      
现在考虑C选项语句Convent(X)带括号,但却无Call引导,因此直觉上似乎不能正确执行。但若我们在VB代码编辑器中输入该句,回车后,该语句自动调整为:Convent (X),注意此时Convent(X)之间有一个空格,因此该句中的括号是用于X,而不是用于Convent,所以尽管无Call引导但其却能够执行,此时实参为(X),因此参数将按值传递。所以对于Call Convent(X)Convent(X),虽然都能执行,并非是由于Convent(X)前可以省略Call,而在于它们的实参分别是X(X),其传递参数的方式自然就不同。


  (三) 
阅读程序写出运行结果:


      
Private Sub Form_Click()

           Dim x As Integer, y As Integer, z As Integer

           x = 1: y = 2: z = 3

           Call sub1(x, y, y)

        Print x,y,z

End Sub

Private Sub sub1(x As Integer, y As Integer, ByVal z As Integer)

Dim I As Integer

           x = 3 * z: y = 2 * z: z = x + y

           Print x, y, z

End Sub

分析:

上一页  1 2 3 4 下一页
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。