ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vb6.0第五课

2019-10-25 09:01:17  阅读:229  来源: 互联网

标签:sub 形参 第五课 传递 vb6.0 参数 integer 实参


一、参数
1、 形参:出现在sub过程和function过程中。
2、实参:调用参数时传递值
在这里插入图片描述
二、参数按值和按地址传递
在VB中传递参数有两种方式:按值传递、按地址传递。其中按地址传递,又称为“引用”。
1、按值传递参数
按值传递使用Byval定义参数。使用时,程序为形参在内存中临时分配一个内存单元,并将实参的值传递到这个内存单元中。当过程中改变形参的值时,则只是改变形参内存单元中的值,实参的值不会改变。
如:

Private sub test( byval a as integer, byval b as  integer)
   A=a+20
   B=b+0
   Print “a=” & a , “b=”& b
End sub

Private sub cmdtest_click()
    Dim num1 as integer ,  num2 as integer
    Num1=10
    Num2=10
    Print “num1=” & num1 , “num2=” & num2
    Call test(num1,num2)
    Print “num1=” & num1 , “num2=” & num2
End sub

上述代码中,test过程中修改了形参a 和 b 的值,a和b是按值传递参数的,单击“cmdtest”后,形参a和b的改变没有影响实参num1和num2的取值。

2、按地址传递参数
按地址取值使用byref定义参数。在定义过程中,如果没有byval ,默认的是按地址传递参数。
按地址传递参数,是指把形参变量的内存地址传递给被调用的过程。形参和实参具有相同的地址,即形参和实参共享同一段存储单元。
Private sub test(a as integer, b as integer)
………. 别的都相同
测试结果:形参a和b的改变影响了实参num1 和num2的取值。如下图所有 在这里插入图片描述
按值传递参数、按地址传递参数应用场合,参考以下几条规则:
(1)对于整型、长整型或单精度参数,如果不希望过程修改实参的值,则采用传值方式。而为了提高效率,字符串和数组应采用传地址方式。此外,用户定义的类型和控件只能通过地址传送。
(2)对于其他数据类型,可以采用两种方式传送。但是建议此类参数最好用传值方式传送,这样可以避免错用参数。
(3)用函数过程可以通过过程名返回值,但只能返回一个值;子过程不能过程过程名返回值,但可以通过参数返回值,并可以返回多个值。但需要子过程返回值时,其相应的参数要用传地址方式。

数组参数:在定义过程中,用数组作为形参出现在过程的形参列表。语法如下:
形能数组名() [As 数据类型]
说明:实参列表中的数组不需要使用括号“()”,过程传递数组只能按地址传递,即形参和实参共有同一段内存单元。
如:

Private function average( age() as integer , n as integer )  as integer
  Dim I as integer, aver as integer, sum as integer
  For I =0  to n-1
     Sum=sum+age(i)
  Next i
  Aver=sum/n
  Average=aver
End function

Private sub command1_click()
  Dim employees()  as  integer   ‘定义一个用于存储员工年龄的数组
  Redim employees(6) 
  Employees(0)=20
  Employees(1)=28
  Employees(2)=30
  Employees(3)=24
  Employees(4)=25
  Employees(5)=35
  text1=average(employees,6)
end sub

上述数组employees作为实参传递给形参age,形参age需要改变数组的维界。因此实参employees必须用“dim employees() as integer”语句声明为动态数组。

三、对象参数
除了变量和数组作为实参传递给过程中的形参,VB还允许对象(如窗体、控件等)作为实参传递给过程中的形参。
对象参数可以用引用方式,也可以用传递的方式,即在定义过程中,在对象参数的前面加byval.
如下例为通过子过程objectena设置textbox和commandbutton控件不可用。

Private sub objectena( obj1 as object , obj2 as object)
  obj1.enabled=false
  obj2.enabled=false
end sub

private sub form1_load()
  objectena text1,command1
end sub

四、嵌套过程

sub mysub1()
...
end sub

sub mysub2()
   call mysub1
end sub

private sub form1_load()
call mysub2
end sub

上述代码中,mysub2过程调用mysub1过程,而form1_load事件过程又调用了mysub2过程

标签:sub,形参,第五课,传递,vb6.0,参数,integer,实参
来源: https://blog.csdn.net/jywlchuang/article/details/102666275

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有