下列程序的输出结果为_。 Private Sub Command1_Click() Dim a()
下列程序的输出结果为_。PrivateSubCommand1_Click()Dima()a=array(1,2,3)ReDimPreservea(5)Printa(2)E...
下列程序的输出结果为_。
Private Sub Command1_Click()
Dim a()a=array(1,2,3)
ReDim Preserve a(5)
Print a(2)
End Sub
A.1 B.2 C.3 D.0 展开
Private Sub Command1_Click()
Dim a()a=array(1,2,3)
ReDim Preserve a(5)
Print a(2)
End Sub
A.1 B.2 C.3 D.0 展开
展开全部
量,才看起来很复杂,要分析清楚就必须先搞清楚各个变量的使用范围,和调用规则。
Dim x As Integer, y As Integer'这里有一组外部变量,整个过程都可以调用
Private Sub Command1_Click()
Dim a As Integer, b As Integer'局部变量,在这个过程中出现的都是指这个变量,其他地方的不可以调用,同名变量的变化也不会影响到它
a = 5: b = 3
Call sub1(a, b)
Print a, b
Print x, y’这里就是指输入外部变量x,y
End Sub
Private Sub sub1(ByVal m As Integer, n As Integer)
'这里有个注意点:m和n的传递方式不同,简单说来就是call sub1(a,b)中a的值传给m,之后m的改变不会影响a,两者独立改变值,而b的值传给n后,n的值改变会影响b,也就是最后print a,b中b的值是最后一个n值返回给b的。所以最后才会b=2
Dim y As Integer'这是必须与前面外部y区分的局部y,在sub1中涉及到的都是这个局部y,它的改变与外部y无关。
x = m + n: y = m - n'局部的y只在这里有改变,之后始终为2
m = fun1(x, y)'传递的参数是外部x和局部y
n = fun1(y, x)
End Sub
Private Function fun1(a As Integer, b As Integer) As Integer
'这里的参数a,b相当于fun1的局部变量,只和前面调用函数时的x,y有关,和之前的那组a,b无关,这里的传递方法也是需要注意。
x = a + b: y = a - b'注意点:计算了x=8+2=10之后,因为传递方法是互相影响的类型,那么fun1这里的a的值也随之改变,下面计算y时就是y=10-2=8
这就是你的第一个问题所在。而且还要注意:这里获得赋值的y是那个外部变量的y,因为那个局部变量的y只在sub1函数内有效,其他地方无效。
Print x, y'输出外部x和外部y
fun1 = x + y
End Function
我就是解释了一部分,我想弄清楚标注地方的说明,就能够把下面的分析弄通~还有一点 你如果把所有函数括号里参数传递的方法都定为byval,那么输出就是你自己的答案。
ByVal 与 ByRef(默认值)
这两个是子过程的参数传递时,指定参数按什么传递的
ByVal(按值传递)
ByRef(按地址传递)
具体这样来理解:
过程中的参数列表,我们称形参
调用过程时的参数列表,我们称实参
在调用时,我们要将实参的值传递给形参,这样过程才能拿这些数据参与计算并实现一些功能
那么在传递的过程中,就存在这两种传递方式
传值时(ByVal),是先给形参开辟一个临时地址,将实参的内容传入这个临时地址,这样,传递后,形参与实参是在两上不同的地址中,也就是说他们是相互独立的
传址时(ByRef),是直接将实参的地址传递给形参,这样,形参与实参就共用一个地址,所以,形参内容的改变,也直接改变了实参的内容
通过上面的分析,你只要记得:
按值传递时(ByVal),形参的改变不会影响到实参
按址传递时(ByRef),形参的改变,会影响到实参
Dim x As Integer, y As Integer'这里有一组外部变量,整个过程都可以调用
Private Sub Command1_Click()
Dim a As Integer, b As Integer'局部变量,在这个过程中出现的都是指这个变量,其他地方的不可以调用,同名变量的变化也不会影响到它
a = 5: b = 3
Call sub1(a, b)
Print a, b
Print x, y’这里就是指输入外部变量x,y
End Sub
Private Sub sub1(ByVal m As Integer, n As Integer)
'这里有个注意点:m和n的传递方式不同,简单说来就是call sub1(a,b)中a的值传给m,之后m的改变不会影响a,两者独立改变值,而b的值传给n后,n的值改变会影响b,也就是最后print a,b中b的值是最后一个n值返回给b的。所以最后才会b=2
Dim y As Integer'这是必须与前面外部y区分的局部y,在sub1中涉及到的都是这个局部y,它的改变与外部y无关。
x = m + n: y = m - n'局部的y只在这里有改变,之后始终为2
m = fun1(x, y)'传递的参数是外部x和局部y
n = fun1(y, x)
End Sub
Private Function fun1(a As Integer, b As Integer) As Integer
'这里的参数a,b相当于fun1的局部变量,只和前面调用函数时的x,y有关,和之前的那组a,b无关,这里的传递方法也是需要注意。
x = a + b: y = a - b'注意点:计算了x=8+2=10之后,因为传递方法是互相影响的类型,那么fun1这里的a的值也随之改变,下面计算y时就是y=10-2=8
这就是你的第一个问题所在。而且还要注意:这里获得赋值的y是那个外部变量的y,因为那个局部变量的y只在sub1函数内有效,其他地方无效。
Print x, y'输出外部x和外部y
fun1 = x + y
End Function
我就是解释了一部分,我想弄清楚标注地方的说明,就能够把下面的分析弄通~还有一点 你如果把所有函数括号里参数传递的方法都定为byval,那么输出就是你自己的答案。
ByVal 与 ByRef(默认值)
这两个是子过程的参数传递时,指定参数按什么传递的
ByVal(按值传递)
ByRef(按地址传递)
具体这样来理解:
过程中的参数列表,我们称形参
调用过程时的参数列表,我们称实参
在调用时,我们要将实参的值传递给形参,这样过程才能拿这些数据参与计算并实现一些功能
那么在传递的过程中,就存在这两种传递方式
传值时(ByVal),是先给形参开辟一个临时地址,将实参的内容传入这个临时地址,这样,传递后,形参与实参是在两上不同的地址中,也就是说他们是相互独立的
传址时(ByRef),是直接将实参的地址传递给形参,这样,形参与实参就共用一个地址,所以,形参内容的改变,也直接改变了实参的内容
通过上面的分析,你只要记得:
按值传递时(ByVal),形参的改变不会影响到实参
按址传递时(ByRef),形参的改变,会影响到实参
追问
😔
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询