VB参数传送
在调用一个过程时,必须把实际参数传送给过程,完成形式参数与实际参数的结合,然后用实际参数执行调用的过程。
1、形参与实参
形参是在sub、function过程中定义中出现的变量名,实参则是在调用sub或function过程时送给sub或function贴吧vb是什么意思过程的常数、常量、表达式或数组。
程序在执行过程中,通过把所需要的实际参数传送给过程,取代相应的形参,以执行过程的操作。实参与形参必须按位置次序传送。
两个实参各项之间要用逗号隔开,它可以是:常数、表达式、合法的变量以及后面跟着左右括号的数组名。当为变量名时,可以和过程中的形参变量名一样,也可以不一样。
2、参数传送的两种方法
在visual basic中,参数通过两种方法传送,即传地址和传值。
其中传地址习惯上被称为引用,引用方式通过关键字byref来实现。在定义通用过程时,形参前面的byref关键字通常被省略。
在默认情况下,变量(简单变量、数组或数组元素以及记录)都是通过“引用”(传地址)给sub或function过程。在实际情况下,可以通过改变过程中相应的参数来改变该变量的值。这意味着,当通过引用来传送实际参数时,可以改变传送给过程的变量的值。
而传值(byval)就是通过值传送实际参数,即传送实参的值而不是它的地址。在这种情况下,系统把需要的传送的变量复制到一个临时单元中,然后把该临时单元的地址传送给被调用过程。由于通用过程没有访向变量(实参)的原始地址,因而不会改变原来变量的值,所有的变量的副本上进行的。
在visual basic中,传值方式通过关键字byval来实现。也就是说,在定义通用过程时,如果形参前面有关键字byval,则该参数用传值方式传送,否则用引用(即传地址)方式传送。
在程序设计中,究竟什么时候用传值方式,什么时候用传地址方式,没有硬性规定,但有下面几条规则可供参考:
⑴、对于整形、长整形或单精度参数,如果不希望过程修改实参的值,则应加上关键字byval(值传送)。而为了提高效率,字符串和数组应通过地址传送。此外,用户自定义类型(记录)和控件只能通过地址传送。
⑵、对于其他数据类型,包括双精度型、货币型和变体数据类型,可以用两种方式传送,经验证明,此类参数最好用传值方式传送,这样可以避免错用参数。
⑶、如果没有把握,最好能用传值方式来传送所有变量(字符串、数组和记录类型变量除外),在编写完程序并能正确运行后,再把部分参数改为传地址,以加快运行速度。这样,即使在删除一些byval后程序不能正确运行,也很容易查出错在什么地方。
⑷、用functio过程可以通过过程名返回值,但只能返回一个值;sub过程不能通过过程名返回值,但可以通过参数返回值,并可以返回多个值。当需要用sub过程返回值时,其相应的参数要用传地址方式。
3、数组参数的传送
Visual basic允许把数组作为实参传送到过程中。
当用数组作为过程的参数时,必须使用“传地址”的方式,即可以使用byref关键字或是省略byref关键字(因为默认为byref),而不能是“传值”方式,即不能在P前面使用byval关键字。
为了把一个数组的全部元素传送给一个过程,应将数组名分别放入实参表和形参表,并略去数组的上下界,但括号不能省略。
如果不需要把整个数组传送给通用过程,可以只传送指定的单个元素,这需要在数组名后面的括号中写上指定元素的下标。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论