主题:vb传值的内容看不懂.
workhow
[专家分:810] 发布于 2008-01-13 16:45:00
这例子的运行过程不知道怎么一步一步的运行.有人能帮我在代码画流程图不.
Private Sub Command1_Click()
dim a as integer ,y as integer
x = 5
y = 10
Print "x=" & x
Print "y=" & y
Call change1(x, y)
Print
Print "按值传递结果"
Print "x=" & x
Print "y=" & y
Call change2(x, y)
Print
Print "按地址传递结果"
Print "x=" & x
Print "y=" & y
End Sub
Private Sub change1(ByVal a As Integer, ByVal b As Integer)
Dim g As Integer
g = b
b = a
a = g
End Sub
Private Sub change2(a As Integer, b As Integer)
Dim g As Integer
g = b
b = a
a = g
End Sub
回复列表 (共8个回复)
沙发
brokenworld [专家分:2640] 发布于 2008-01-13 17:03:00
在过程中加入 debug或者print
传值是不改变原来变量内容的。
板凳
老大徒伤悲 [专家分:29120] 发布于 2008-01-13 17:15:00
在每段过程的开头加上断点
运行后,就后停在那里。
然后按F8可以单步运行,各变量值以及运行顺序,自然就清楚了
3 楼
workhow [专家分:810] 发布于 2008-01-13 20:02:00
它们是谁传给谁.因为没有流程详解.不明白啊.书上给的例子又少,不知道上那请教.太难读懂.有耐心的请帮下吧.
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-13 20:53:00
sub里面是双向传递
5 楼
workhow [专家分:810] 发布于 2008-01-13 22:56:00
老大徒伤悲,你写多几个简短的例子出来吧,并说明原理和思路.
6 楼
华山论剑 [专家分:5310] 发布于 2008-01-14 09:26:00
所谓的传值和传址,是针对子函数调用时的参数来说的,子函数调用的传值还是传址,是由其参数声明确定的。
Private Sub change2(a As Integer, b As Integer)
默认的声明,a和b是传址(变量地址),相当于C/C++中的引用类型和指针类型,参数的值可以在子函数中被改变且返回被改变的值。
Private Sub change1(ByVal a As Integer, ByVal b As Integer)
加上ByVal就是传值,参数a、b只是数值的复制品传给子函数,a、b可以在子函数内改变(只是其复制品),但是返回时a、b是不会有任何改变的。
7 楼
workhow [专家分:810] 发布于 2008-01-14 12:55:00
华山论剑,你只是把书上的内容重说一次,我根本不知道是怎么进行的,对于会的人来说,可能是简单的事,对新手来说是一头雾水.
8 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-14 15:49:00
说说就说说。
为了好说,对语句编号。
1 Private Sub Command1_Click()
2 dim a as integer ,y as integer '在这里你没有声明变量x,下面会出错!
3 x = 5
4 y = 10
5 Print "x=" & x
6 Print "y=" & y
7 Call change1(x, y)
8 Print
9 Print "按值传递结果"
10 Print "x=" & x
11 Print "y=" & y
12 Call change2(x, y)
13 Print
14 Print "按地址传递结果"
15 Print "x=" & x
16 Print "y=" & y
17 End Sub
18 Private Sub change1(ByVal a As Integer, ByVal b As Integer)
19 Dim g As Integer
20 g = b
21 b = a
22 a = g
23 End Sub
24 Private Sub change2(a As Integer, b As Integer)
25 Dim g As Integer
26 g = b
27 b = a
28 a = g
29 End Sub
次序 已执行语句编号 变量的值
按钮过程 change1过程 Change2过程
a x y a b g a b g
1 1 - - - - - - - - -
2 2 0 - 0 - - - - - -
3 3 0 5 0 - - - - - -
4 4~6 0 5 10 - - - - - -
5 18 0 5 10 5 10 - - - -
6 19 0 5 10 5 10 0 - - -
7 20 0 5 10 5 10 10 - - -
8 21 0 5 10 5 5 10 - - -
9 22 0 5 10 10 5 10 - - -
10 23(7)~11 0 5 10 - - - - - -
11 24 0 5 10 - - - 5 10 -
12 25 0 5 10 - - - 5 10 0
13 26 0 5 10 - - - 5 10 10
14 27 0 5 5 - - - 5 5 10
15 28 0 10 5 - - - 10 5 10
16 29(12)~17 0 10 5 - - - - - -
如果这样你在看不懂,我就不知道怎么说了。
我来回复