VB难点解析.doc

上传人:b****1 文档编号:232236 上传时间:2022-10-07 格式:DOC 页数:2 大小:19KB
下载 相关 举报
VB难点解析.doc_第1页
第1页 / 共2页
VB难点解析.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB难点解析.doc

《VB难点解析.doc》由会员分享,可在线阅读,更多相关《VB难点解析.doc(2页珍藏版)》请在冰豆网上搜索。

VB难点解析.doc

过程调用时实参与形参数据类型不匹配问题

VB过程调用的参数传递时,要求形参与实参在参数的个数、数据类型、位置要一一对应。

对于参数个数相同、位置对应相对容易理解,但对于数据类型具体如何匹配?

这还要具体分析。

1.实参与形参数据类型相同

如果形参与对应的实参的数据类型完全一致,则不论是“按值传递”还是“按地址传递”的调用,均不会出现问题。

但要注意以下两种情况:

一是实参未定义类型,系统会自动将它定义为Variant类型;二是实参已定义,但定义方法不对。

如:

PrivateSubson(xAsInteger,yAsInteger,zAsInteger)

x=x+1

y=y+1

z=z+1

Printx,y,z

EndSub

PrivateSubCommand1_Click()

Dimj,kAsInteger

i=3:

j=4:

k=5

Callson(i,j,k)

Printi,j,k

EndSub

运行时,会出现右图的编译错误提示。

这里的i未定义类型,虽然通过赋值转换使得变量i的值为整型常量3,但系统自动认为i为变体型,导致与过程中的形参x类型不同;变量j虽然进行了说明,但也没定义类型,因此变量j也还是变体型,错误与i相同。

2.实参与形参数据类型相容

当按照“值传递”时,实参和形参类型可以不同,但必须要能够由实参类型自动转换为形参类型:

(1)数值型可以自由转换为字符串型,转化规则是:

数据直接加上双引号变为数字字符串。

(2)数字构成的字符串可以转换为数值类型,否则会出现“类型不匹配”错误。

(3)只有“True”或者“False”字符串可以转换为逻辑型,转化规则是统一变以True或者False而不论串中的这两个单词的大小写情况。

(4)逻辑型可以自由转换为字符串型,转换规则是True和False分别加上双引号。

(5)逻辑型可以自由转换为数值类型,转换规则是True变为-1、False变为0。

(6)数值类型可以自由转换为逻辑型,转化规则是0变为False、非0变为True。

3.实参与形参数据类型不同

如果实参与形参的数据类型不同,也可以通过类型转换函数将其变为同一数据类型后进行传递。

这些函数很多,如Str、Val、Chr…。

如果这些函数直接用于实参变量中来传递,则实参就变成了表达式,传递的实质是“值传递”;如果将变量通过函数转换后放入另一个变量中,将转换后的变量作为实参传递,则可实现“地址传递”调用。

下面来分析一道实例题目:

在应用程序中用“PrivateSubSub1(XAsInteger,YAsSingle,ZAsVariant)”定义了子程序过程Sub1。

调用过程Sub1的实参变量I,J,K均定义为Integer型、L定义为逻辑型,能用Call正确调用过程Sub1的是哪些?

①Sub1(I,J,K)

②Sub1(I,3.65,K)

③Sub1(3.14,234,L)

④Sub1("245","231.5",J)

⑤Sub1(K,3.65,K)

⑥Sub1(3.14,True,L)

分析:

①实参I,J,K与形参X,Y,Z均为传地址调用。

I和X均为整型可以传递;形参Z为Variant,按照前面观点,虽然与之对应的K是整型,但可以实现传址调用;由于J为Integer、Y为Single,不能实现传地址调用,因此该答案是错误的。

②实参3.65为值,与形参Y匹配时将按值传递,因此该答案正确;

③虽然实参3.14对应的形参X为Integer、实参234对应的形参Y为Single、实参L对应的形参Z为Variant,但由于X和Y都是按照值传递,因此3.14将转化为3、而234可以直接赋给Y,逻辑变量L可以与Z传递,因此该答案正确;

④由于实参“245”和“231.5”均为字符串常量,因此与其对应的形参X、Y将按照值传递,而数字字符串是可以转化为数值类型的,因此该答案正确;

⑤K作为实参,与形参X和Z分别进行两次传地址调用,所以形参X和Z中的任意一个在过程中发生改变,都将影响到K的值,因此该答案也正确;

⑥虽然实参True对应的形参Y为Single,但由于是传值调用,因而True将转化为-1赋给Y,最后的答案应该也是正确的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1