VB,VB题,这串代码Call p(x, (y))处括号里面有个括号什么意思
PrivateSubCommand1_Click()DimxAsInteger,yAsIntegerx=30:y=48Callp(x,(y))Printx;yEndSub...
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 30: y = 48
Call p(x, (y))
Print x; y
End Sub
Public Sub p(ByVal n As Integer, m As Integer)
n = n \ 10
m = m \ 10
End Sub
难道是说p(x, (y))都是给n传值吗? 展开
Dim x As Integer, y As Integer
x = 30: y = 48
Call p(x, (y))
Print x; y
End Sub
Public Sub p(ByVal n As Integer, m As Integer)
n = n \ 10
m = m \ 10
End Sub
难道是说p(x, (y))都是给n传值吗? 展开
展开全部
(1)Sub p(ByVal n As Integer, m As Integer)
(2)Call p(x, (y))
先看第(1)句,定义的过程p()包含两个参数,其中n是传值的,m是传址的。
再来看第(2)句,调用时,x变量的值传递给n(传值)。如果y不加括号,则是传址给m;现在给y又加上了括号,则y也是传值给m的了。这是y单独加不加括号的的区别。
现在回答你的疑问:“难道是说p(x, (y))都是给n传值吗?”
答:因为变量x对应n参数,所以给n传值与y加不加括号没有关系。之后以n是传值,是因为定义过程时的说明(参见在第(1)句中byval)。
(2)Call p(x, (y))
先看第(1)句,定义的过程p()包含两个参数,其中n是传值的,m是传址的。
再来看第(2)句,调用时,x变量的值传递给n(传值)。如果y不加括号,则是传址给m;现在给y又加上了括号,则y也是传值给m的了。这是y单独加不加括号的的区别。
现在回答你的疑问:“难道是说p(x, (y))都是给n传值吗?”
答:因为变量x对应n参数,所以给n传值与y加不加括号没有关系。之后以n是传值,是因为定义过程时的说明(参见在第(1)句中byval)。
追问
我试了下去掉ByVal结果y还是原数,是不是只要加上括号就变味传值了
追答
x变量的值是传值给参数n,所以子过程中对n的赋值不会影响到x,它们已经没有关联。这是因为ByVal n As Integer的原因;
y变量的值也是传值给参数m,所以对m的赋值不会影响到y,它们已经没有关联。这是因为(y)的原因。
需要注意的是:ByVal仅仅对x->n有效,而对后面的y->m无效,所以,你去掉byval,并不会影响y的传递方式。若想两个参数都传值,要写成Sub p(ByVal n As Integer,byval m As Integer)才可以。
所以,在原程序中,你只是把byval去掉,y仍然保持的是传值状态,所以它还是原数。你说的“只要加上括号就变味传值了”是对的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询