- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB参数传递方式判别与解题应用-VB参数传递方式判别与解题应用- ?? 作者:曹苏群:VB过程中使用的参数分为实参和形参,简单的讲,在过程定义中给定的参数是形参,而在过程调用语句中给定的参数是实参。当调用一个有参数的过程时,形参和实参逐一匹配传递,根据传递方式不同,可分为按值和按地址两种。对参数传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点。 一、??????????? 按值与按地址方式的内涵?????? 按值传递参数,实质上是将实参的值复制一份给形参,因此形参获得的是实参的副本,当过程执行中对形参进行改变,并不会影响实参本身;按地址传递参数,实质上是将实参变量的地址传递给形参,因此形参与实参将指向同一内存单元,当过程执行中形参发生改变时,对应实参也将跟着改变。二、??????????? 参数传递方式判别方法?????? 判断参数传递方式,不能单纯的看过程定义中形参前的修饰限定词有无ByVal。参数传递到底采用何种方式,不仅取决于过程定义,还取决于过程调用,即与对应实参的具体形式也有很大关系。因此,应该从以下三个方面综合考虑:1.?????? 形参是否为数组或者控件2.?????? 形参前是否有ByVal修饰3.?????? 对应实参是否为表达式或者值具体判别方法,请见如下判别流程图。三、不同传递方式对参数类型的要求若参数按地址传递,则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要求,按照地址传递的实参和形参数据类型必须完全一致,而根据题意,J为Integer,Y为Single,因此不正确;对于Call Fun(I,3.65),I与X按地址传递;而实参3.65为值,与形参Y匹配时,将按值传递,因此正确;对于Fun(3.14,234),虽然实参3.14对应的形参X为Integer,实参234对应的形参Y为Single,但由于它们都是按照值传递,因此3.14将转化为3,而234可以直接赋给Y,因此正确;对于Fun(“245”, “231.5”),由于实参“245”和“231.5”均为字符串值,因此其与对应形参X、Y将按照值传递,而数字字符串是可以转化为数值类型的,因此正确。综上所述,正确答案为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.?????? 对于A、B选项,实参分别为(X)和X*1,均为表达式,因此A、B选项中的实参将按照值传递;对于D选项,实参X未用括号引导,此时不可加Call,因此语句正确,同时,根据判别流程图,实参X与形参Y必按地址传递。分析至此,对于该题为单选题,已经可以断定答案是D。2.?????? 现在考虑C选项语句Convent(X)带括号,但却无Call引导,因此直觉上似乎不能正确执行。但若我们在VB代码编辑器中输入该句,回车后,该语句自动调整
文档评论(0)