求助 请VB 老师帮我详解一下

2024-12-12 22:19:02
推荐回答(2个)
回答1:

这个题目考的是vb函数参数的传值方式。

vb的函数声明中,参数可以按照两种方式进行传递。按地址(ByRef)方式和按值(ByVal)方式。在vb里,如果不加特殊说明,函数的参数默认的是按照“地址”方式,即ByRef方式传递。

比如
Private Sub test(p,m,n)
相当于
Private Sub test(ByRef p, ByRef m, ByRef n)
由于是对地址进行操作,那么函数内部对形参(p,m,n)的赋值和计算结果会返回给调用者并体现出来。

所以,上面的程序运行后
a1由于在test里面进行了p=p+1的操作,值会变为2。
同理,c1会变为4。
而调用test的时候,第二个参数传入的是b1+3,并非b1的地址,所以,调用test之前和之后,b1并没有被影响到,所以b1的值不会发生变化,仍然为2

所以,输出为:
Sub: 2 6 4
Main: 2 2 3

回答2:

Test是一个运算函数 需要输入的数值是 p.m.n
其中的运算过程是 p.m.n 各+1
然后再把p.m.n的值打印到窗体上
也就是说你输入 Test(1,2,3) 则打印出来的就是 Sub:2,3,4

按钮一
定义了3个常量 a1=1: b1=2: c1=3
此时Test(a1,b1+3,(c1))
带入a1 b1 c1的值为 Test(1,2+3,3)
则通过Test运算的结果为 Sub:2,6,4
完成后面Print Main a1b1c1的运算
则 最后打印出来的结果为:
Sub:2,6,4
Main:1,2,3