数组名2=数组名1
我们就此形式作讨论:这里的数组名2,实际上在前面的数组声明时,只能声明为Variant的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2()或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息 。
所以,为了程序的安全、可靠,建议读者还是忍痛割爱,少用VB6.0的这一新功能,使用传统的循环结构来给数组赋值 。基于此原因,我们也就在教程中不作展开 。
五、过程中常见错误和注意事项
1.程序设计算法问题
该章程序编写难度较大,主要是算法的构思有困难,这也是程序设计中最难学习的阶段 。经验告诉每一位程序设计的初学者,没有捷径可走,多看、多练、知难而进 。上机前一定要先编写好程序,仔细分析、检查,才能提高上机调试的效率 。每当一个程序通过艰苦的努力调试通过时,那苦尽甘来的喜悦令你一言难尽 。
2.确定自定义的过程是子过程还是函数过程
实际上过程是一个具有某种功能的独立程序单位,供多次调用 。子过程与函数过程的区别是前者子过程名无值,后者函数过程名有值 。若过程有一个返回值,则习惯使用函数过程;若过程无返回值,则使用子过程,若过程返回多个值,一般使用子过程,通过实参与形参的结合带回结果,当然也可通过函数过程名带回一个,其余结果通过实参与形参的结合带回 。
3.过程中形参的个数和传递方式的确定
对初学者,在定义过程时不能确定形参的个数和传递方式 。
过程中参数的作用是实现过程与调用者的数据通信 。一方面,调用者为子过程或函数过程提供初值,这是通过实参传递给形参实现的,另一方面,子过程或函数过程将结果传递给调用者,这是通过地址传递方式实现的,因此,决定形参的个数就是由上述两方面决定的 。对初学者,往往喜欢把过程体中用到的所有变量作为形参,这样就增加了调用者的负担和出错概率,也有的初学者全部省略了形参,则无法实现数据的传递,既不能从调用者得到初值,也无法将计算结果传递给调用者 。
VB中形参与实参的结合有传值和传地址两种方式 。区别如下:
(1)在定义形式上前者在形参前加即ByVal关键字 。
(2)在作用上值传递只能从外界向过程传入初值,但不能将结果传出,而地址传递既可传入又可传出 。
(3)如果实参是数组、自定义类型、对象变量等,形参只能是地址传递 。
4.实参与形参类型对应问题
在地址传递方式时,调用过程实参与形参类型要一致 。例如:
函数过程定义如下:
Public Function f!(x!)
f=x+x
End Function
主调程序如下:
Privme Sub Commandl_Click()
Dim y%
y=3
Print f(y)
End Sub
上例形参x是单精度型、实参y是整型,程序运行时会显示"ByRef参数类型不符"的编译出错信息 。
在值传递时,若是数值型,则实参按形参的类型将值传递给形参 。例如:
函数过程定义如下:
Public Function f!(ByVal x%)
f=x+x
End Function
主调程序如下:
Priva~SubCommandI_Click()
Dim y!
Y=3.4
Print f(y)
End Sub
程序运行后显示的结果是6 。
5.变量的作用域问题
局部变量,在对该过程调用时,分配该变量的存储空间,当过程调用结束,回收分配的存储空间,也就是调用一次,初始化一次,变量不保值,窗体级变量,当窗体装入,分配该变量的存储空间,直到该窗体从内存卸掉,才回收该变量分配的存储空间 。
- 高德地图怎么测距?高德地图测距图文教程
- 战士爆破职业BD玩法图文教程 恐怖黎明爆破者技能加点
- comodo防火墙怎么样使用 comodo防火墙设置教程
- 微视应援榜位置在哪?微视应援榜查看教程解答!
- 人人直播怎么玩?人人直播app玩法教程
- 对于孕晚期的孕妈来说要做哪些准备,哪些待产包更实用?
- 中华好少年怎么使用?中华好少年app使用教程
- 38周的新手宝妈如何准备入院待产包?有哪些实用清单值得推荐?
- 产后妈妈认为有哪些待产用品是最实用的?
- 待产包最全清单都有哪些?预产期在11月份,该如何准备实用的所需物品?
