按值传递与按地址传递
时 间:2012-09-22 09:10:01
作 者:风行 ID:16058 城市:江阴
摘 要:在调用一个有参数的过程时,首先进行的是形式参数与实在参数的结合,实现调用过程的实在参数与被调用过程的形式参数之间的数据传递。数据传递方式有两种方式:按值传递与按地址传递。
正 文:
1. 按值传递参数
按值传递参数时,是将实在参数的值复制一个形式参数中,如果在调用过程中改变了形式参数的值,不会影响实在参数本身,即实在参数保持调用前的值不变。
按值传递参数方法是在形式参数前加上ByVal,如:Sub S1(ByVal a As Integer,ByVal b As integer) ;另外一些特别情况也是按值传递参数,如实在参数是常数、表达式时; 对于实在参数是变量时,只要在其左右加上圆括号,如 Call Sub1((x),(y))。
2.按地址传递参数
按地址传递参数时,把实在参数的地址传送给被调用过程,形式参数和实在参数共用内存的同一地址。在被调用过程中,形式参数的值一旦改变,相应实参的值也跟着改变。
按地址传递参数方法是在形式参数前加上ByRef,或形式参数前为空,如:Sub S1([ByRef] a As Integer,[ByRef] b As integer) ;形参数组只能按地址传递参数。
举例1:
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 10: b = 25
Call sub1(a, b)
Print a, b
End Sub
Private Sub sub1(ByVal m As Integer, ByVal n As Integer)
Dim temp As Integer
temp = m
m = n
n = temp
Print m, n, temp
End Sub
运行结果是:
在窗体第一行显示:25 10 10
在窗体第二行显示:10 25
见下图:
举例2:
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 10: b = 25
Call sub1(a, b)
Print a, b
End Sub
Private Sub sub1(ByVal m As Integer, n As Integer)
Dim temp As Integer
temp = m
m = n
n = temp
Print m, n, temp
End Sub
运行结果是:
在窗体第一行显示:25 10 10
在窗体第二行显示:10 10
见下图:
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 10: b = 25
Call sub1(a, b)
Print a, b
End Sub
Private Sub sub1(m As Integer, ByVal n As Integer)
Dim temp As Integer
temp = m
m = n
n = temp
Print m, n, temp
End Sub
运行结果是:
在窗体第一行显示:25 10 10
在窗体第二行显示:25 25
见下图:
举例4:
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 10: b = 25
Call sub1(a, b)
Print a, b
End Sub
Private Sub sub1(m As Integer, n As Integer)
Dim temp As Integer
temp = m
m = n
n = temp
Print m, n, temp
End Sub
运行结果是:
在窗体第一行显示:25 10 10
在窗体第二行显示:25 10
见下图:
举例5:
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 20: b = 50
p1 a, b
p2 a, b
p3 a, b
Print "a="; a, "b="; b
End Sub
Private Sub p1(x As Integer, ByVal y As Integer)
x = x + 10
y = y + 20
End Sub
Private Sub p2(ByVal x As Integer, y As Integer)
x = x + 10
y = y + 20
End Sub
Private Sub p3(ByVal x As Integer, ByVal y As Integer)
x = x + 10
y = y + 20
End Sub
运行结果是:
在窗体上显示:a= 30 b=70
见下图:
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)