VB中函数过程调用的问题 5
Functionf(a)AsIntegera=2f=5EndFunctionPrivateSubCommand1_Click()x=10y=x+f(x)PrintyEnd...
Function f(a) As Integer
a = 2
f = 5
End Function
Private Sub Command1_Click()
x = 10
y = x + f(x)
Print y
End Sub
上面的程序为什么Y的值为2+5,而不是10+5?
下面这个Y的值为10+5,而不是2+5,两者有什么区别???请详解,多谢!
Function f(a) As Integer
a = 2
f = 5
End Function
Private Sub Command1_Click()
Dim x As Integer
x = 10
y = x + f(x)
Print y
End Sub 展开
a = 2
f = 5
End Function
Private Sub Command1_Click()
x = 10
y = x + f(x)
Print y
End Sub
上面的程序为什么Y的值为2+5,而不是10+5?
下面这个Y的值为10+5,而不是2+5,两者有什么区别???请详解,多谢!
Function f(a) As Integer
a = 2
f = 5
End Function
Private Sub Command1_Click()
Dim x As Integer
x = 10
y = x + f(x)
Print y
End Sub 展开
展开全部
区别就在于你前面的代码是没声明x就直接用,相当于x为Variant类型,Variant类型做为函数参数的时候,默认是按地址传值的,也就是说你在f(a)中对a的赋值会直接影响到原本的x,结果就是2+5,而后面是声明了int类型,这个默认是按值传递的。
为了避免这种情况,建议你在定义f的时候就直接写成Function f(ByVal a) As Integer,明确表明你是按值传递,这样你在f中对a的操作就不会再影响到原本传入的参数,同样无论你是否声明x,都会得到10+5
为了避免这种情况,建议你在定义f的时候就直接写成Function f(ByVal a) As Integer,明确表明你是按值传递,这样你在f中对a的操作就不会再影响到原本传入的参数,同样无论你是否声明x,都会得到10+5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询