按值传递与按地址传递
来源:互联网 发布:淘宝模板助手 编辑:程序博客网 时间:2024/06/10 04:52
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
见下图:
- 按值传递与按地址传递
- 按值传递与按地址传递参数
- 值传递与地址传递
- 值传递与地址传递
- 值传递,地址传递与引用传递
- 按值传递&&按引用传递&&按地址传递
- About 值传递 与 地址传递
- C语言地址传递与值传递
- 结构体 “值传递” 与“地址传递”
- 辨析地址传递与值传递
- 值传递与地址传递的区别
- 值传递与地址传递的区别
- Java基础-值传递与地址传递
- C语言值传递与地址传递
- C 值传递与地址传递图解
- 值传递&&地址传递
- 值传递、引用传递与地址传递对比
- 值传递、地址传递与引用传递的使用
- Linux命令大全
- 什么呀
- GL_PROJECTION和GL_MODELVIEW的作用
- 注册DLL文件命令
- searchDisplayController.searchBar点击后式样变了,变窄了
- 按值传递与按地址传递
- nginx安装并支持upstream和tcp代理模块
- css样式案例
- 修改了一下某个大神的AnimatePacker,以适应plist格式的动画格式
- android.view.WindowManager$BadTokenException: Unable to add window — token null
- Effective Object-C 2.0 第一章(条目1和2)
- jQuery特殊符号转义
- 彻底删除Ubuntu上的MySQL
- 【DFS(记忆化)】hdu 1501 Zipper