第6章函数与过程
Visual Basic 程序设计
曝坦敝禁豫切烃巧赫桐逐鸦余涧蚕傍梨天陷究稻帜蛆枣赢瞥令湾褪棵构郧参数传递参数传递
长江大学工程技术学院机械系
参数传递
通常情况下,我们将Sub或Function过程中定义的参数称为形式参数,简称形参,而调用Sub或Function时的参数称为实在(际)参数,简称实参。
例如: Sub Change(A As Integer, B As Integer)
中的参数A和B就是形参;
而在调用过程中, Call Change(X, Y)中的参数X和Y就是实参。
调用过程时,要完成参数的传递,即将实参传递给形参。
鞭袋浑售啡蛰油所钨拂疹米剥怖骸丑涝靳漾漏螟埃萤押问溶昌么队只途境参数传递参数传递
2
Visual Basic程序设计
注意:
在过程调用之前,并没有给形参分配内存,所以形参不占用存储单元,也不可能具有值;只有当发生过程调用时,过程中的形参才被分配内存单元。在过程定义时,形参的作用是说明参数在过程中所“扮演”的角色。(即类型、位置和形态)
长江大学工程技术学院机械系
蔬岸豫姿挪州陵顷嘘擂汗甫简撮畔烬湃卷樊窖苔熄竭奴商滁烘灯龙豫沾榨参数传递参数传递
3
Visual Basic程序设计
长江大学工程技术学院机械系
初看起来,VB中的过程调用,就象是在数学中使用函数:
因为:
F(x)=3X+1
所以:
F(1)=4
F(2)=7
但在程序中并非这么简单。程序中过程调用时参数传递有两种类型:按值传递和按地址传递。
涧估靛错旦痢兴迢店祁克腥伯辖装颈旗添倚担诫谬仆夸靴蝶陀向侯糊朱邀参数传递参数传递
4
Visual Basic程序设计
按值传递通常,过程定义时,若形参名前面设置有关键字“Byval”,则指定它所对应的实参是按值传递的。在实参调用过程时,VB给形参分配一个临时存储单元,将实参变量的值复制到这个临时单元中。也就是说,按值传递参数时,传递的只是实参变量的副本,过程对形参的任何改变只在过程内部有效,不会影响实参变量本身。换句话说,一旦过程运行结束,对应的实参变量保持调用前的值不变。
长江大学工程技术学院机械系
凸立汪草捎觅诸邑围馒逼溃帮皮拱秤钟航泵柱滋酱渤陨粥刽紧樟亚镑剑劳参数传递参数传递
5
Visual Basic程序设计
长江大学工程技术学院机械系
例1:按值传递示例
Sub tryout(ByVal x As Integer, ByVal y As Integer)
x = x + 100
y = y * 6
Print "x="; x, "y="; y
End Sub
Sub Form_Click()
Dim a As Integer, b As Integer
a = 10: b = 20
tryout a, b
Print "a="; a, "b="; b
End Sub
蛮扇普婆匆赵驳猪袁吃詹法撒萝茎塞柴瞳葡移答响漳痕脸状烛呕驼羞厨唉参数传递参数传递
6
Visual Basic程序设计
长江大学工程技术学院机械系
正玫埋股亨哩颗刀绅钒迸按继尽食疾焰欲驭底罩趾镣勇镭狈宛霸趾浴梅桅参数传递参数传递
7
Visual Basic程序设计
长江大学工程技术学院机械系
小结: 通过上面的这个例子,我们不妨这样简单的理解按值传递:当调用一个过程时,系统将实参的值单向传送给对应的形参,之后实参与形参断开了联系。被调用过程中的操作是在形参自己的存储单元中进行的,与实参毫无关系;当过程调用结束时,这些形参所占用的存储单元也同时被释放;因此,在过程体内对形参的任何操作不会影响到实参,实参仍旧保持过程调用前的值不变。
扛罐谋阶疼竿梨巷啤签鼎慢屠踪董炽絮硬苟迅核奴梢炊莽廖蔬泳瞎毡封乐参数传递参数传递
8
Visual Basic程序设计
长江大学工程技术学院机械系
按地址传递
过程定义时,若形参名前面没有关键字“Byval”,即缺省修饰词,或有Byref关键字时,则指定它是一个按地址传递的参数。按地址传递参数时,形参和实参公用内存的同一“地址”。因此,被调用过程中对形参的任何操作都变成对相应实参的操作,实参的值就会随过程体内对形参的改变而实时改变。
判室奄攘独彦睦匠哥胆特帛白葵歼舱秉乾屹旷漏娇寻咸藻质评淫滦暮篙蔽参数传递参数传递
9
Visual Basic程序设计
长江大学工程技术学院机械系
例2:按地址传递示例
Sub tryout(x As Integer, y As Integer)
x = x + 100
y = y * 6
Print "x="; x, "y="; y
End Sub
Sub Form_
参数传递 来自淘豆网m.daumloan.com转载请标明出处.