永发信息网

VB传值和传地址

答案:3  悬赏:50  手机版
解决时间 2021-05-10 11:53
  • 提问者网友:相思似海深
  • 2021-05-09 19:33

有如下程序:
Private Sub Command1_Click()
Dim k As Integer, m As Integer
Dim p As Integer
k=4: m=1
p=PC(k, m) : Print p;
p=PC(k, m) : Print p
End Sub
Private Function PC(a As Integer, b As Integer)
Static m As Integer, i As Integer
m=0: i=2
i=i + m + 1
m=i + a + b
PC=m
End Function
程序运行后,输出的结果为
A) 4 6
B) 6 6
C) 8 8
D) 10 12

求高手详细解释过程,希望通俗易懂,不然偶看不懂。。

谢谢。。

最佳答案
  • 五星知识达人网友:千杯敬自由
  • 2021-05-09 20:16

简单点解释下传址和传值....


我们打个比方,一个箱子A,里面放了苹果


传值:


就相当于准备另外一个箱子B,然后把箱子B里面放上跟箱子A里面一样的苹果,


无论你怎么改变箱子B里面的苹果数量,都不会影响到箱子A里的数量



传址:


是给箱子A多贴一个标签,箱子B,这时候,箱子A和箱子B都是一个箱子,如果你改变箱子A的苹果数量,那么箱子B的数量也跟着变....



够通俗了吧.....



VB里面 byval 传值 byref传地址, 默认传地址



另外,你这个例子里面,参数传递都是传址的,要注意function PC 里面的m是用static声明的静态变量...



所谓静态变量,可以理解为只能在局部使用的全局变量,该变量里面的内容不会因为跳出过程而消失




回答完毕

全部回答
  • 1楼网友:渡鹤影
  • 2021-05-09 21:05

C===8,8

第一次p=PC(k, m)

i=i + m + 1

=2+0+1

=3

m=i + a + b

=3+4+1

=8

第二次

p=PC(k, m)

i=i + m + 1

=2+0+1

=3

m=i + a + b

=3+4+1

=8

  • 2楼网友:动情书生
  • 2021-05-09 20:57

C

第一次p=PC(k, m) i=i + m + 1=2+0+1=3

m=i + a + b=3+4+1=8

第二次p=PC(k, m) i=i + m + 1=2+0+1=3

m=i + a + b=3+4+1=8

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯