vb参数传递
假设有以下两个过程:PrivateSubPPP(aasSingle,basSingle)a=a+bPrinta,bb=a+bPrinta,bEndSubPrivateSu...
假设有以下两个过程:
Private Sub PPP(a as Single,b as Single)
a=a+b
Print a,b
b=a+b
Print a,b
End Sub
Private Sub Form_Activate()
X=18
Call PPP((x),(x))
Print x;
End Sub
则以下说法中不正确的是:
A 虚参是a和b,两个实参(x)和(x)允许重名
B 虚参是a和b,实参(x)表示传值调用
C 虚参是a和b,实参(x)表示是非传址调用
D 虚参是a和b,两个实参(x)和(x)不允许重名
我不明白的是Activate 是什么事件?非传址是不是就是传值?
如果BC是正确的,那(x)就是传值调用了,可是在定义过程PPP的时候没有ByVal啊? 展开
Private Sub PPP(a as Single,b as Single)
a=a+b
Print a,b
b=a+b
Print a,b
End Sub
Private Sub Form_Activate()
X=18
Call PPP((x),(x))
Print x;
End Sub
则以下说法中不正确的是:
A 虚参是a和b,两个实参(x)和(x)允许重名
B 虚参是a和b,实参(x)表示传值调用
C 虚参是a和b,实参(x)表示是非传址调用
D 虚参是a和b,两个实参(x)和(x)不允许重名
我不明白的是Activate 是什么事件?非传址是不是就是传值?
如果BC是正确的,那(x)就是传值调用了,可是在定义过程PPP的时候没有ByVal啊? 展开
7个回答
展开全部
首先我们把第一次执行的顺序标上去:
public
function
fact
(bybal
n
as
integer
)③
fact
=1④
do
while
n>
0⑤
fact
=fact*n这些反复使用不标序号
n=n-1
loop⑥
end
function⑦
for
i
=
n
to
1
step
-1①
sum=sum+fact((i))②⑧
next
i⑨
列出i,n的值如下(现在是“传值”,假定在for以前n=10):
①10,null
②10,null
③10,10
④10,10
⑤10,10
⑥10,9
………………这里n一直减下去直到n=0跳出do
⑦10,0
⑧10,null
⑨9,null
…………进入第二次循环
…………
…………
下面再说传址的过程,依然假定n的初值是10
只是把最前面的一行语句修改你原来的样子。
执行过程,i,n的值如下:
①10,null
②10,null
③10,10……注意,这里的开始i和n就是一个值(因为他们是相同的内存地址)
④10,10
⑤10,10
⑥9,9
…………
⑦0,0
⑧0,null
⑨退出for循环
大概就是这样的。传址是比较麻烦的,可以理解为给这个变量个被调用的程序段给调用的参数(变量)去了个新名字,但那个变量还是那个变量。在子过程、子函数改变了参数,也影响到了调用者。
public
function
fact
(bybal
n
as
integer
)③
fact
=1④
do
while
n>
0⑤
fact
=fact*n这些反复使用不标序号
n=n-1
loop⑥
end
function⑦
for
i
=
n
to
1
step
-1①
sum=sum+fact((i))②⑧
next
i⑨
列出i,n的值如下(现在是“传值”,假定在for以前n=10):
①10,null
②10,null
③10,10
④10,10
⑤10,10
⑥10,9
………………这里n一直减下去直到n=0跳出do
⑦10,0
⑧10,null
⑨9,null
…………进入第二次循环
…………
…………
下面再说传址的过程,依然假定n的初值是10
只是把最前面的一行语句修改你原来的样子。
执行过程,i,n的值如下:
①10,null
②10,null
③10,10……注意,这里的开始i和n就是一个值(因为他们是相同的内存地址)
④10,10
⑤10,10
⑥9,9
…………
⑦0,0
⑧0,null
⑨退出for循环
大概就是这样的。传址是比较麻烦的,可以理解为给这个变量个被调用的程序段给调用的参数(变量)去了个新名字,但那个变量还是那个变量。在子过程、子函数改变了参数,也影响到了调用者。
展开全部
activate是窗体活动的事件,也就是原来窗体不活动,后来窗体收到焦点变成活动窗体时所触发的事件。传值方式就只有两种 按地址 按值···
答案明显在AD中选择··我觉得应该是D错的···
回答你的补充:
至于你说为什么没有声明的问题是这样的···一般没有加都是默认为按地址传递的,只有加了Byval的才是按值传递···
答案明显在AD中选择··我觉得应该是D错的···
回答你的补充:
至于你说为什么没有声明的问题是这样的···一般没有加都是默认为按地址传递的,只有加了Byval的才是按值传递···
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你就没有改变Text1的Text属性的代码啊,你可以改成这样
Private
Sub
Command1_Click()
aa
Text1
End
Sub
Sub
aa(txt
As
TextBox)
txt.Text
=
CStr(Val(txt.Text)
+
1)
End
Sub
Private
Sub
Command1_Click()
aa
Text1
End
Sub
Sub
aa(txt
As
TextBox)
txt.Text
=
CStr(Val(txt.Text)
+
1)
End
Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果要改变文本框的值只好把该对象作为参数。或许对象属性不适用吧,也或许对象属性不是个变量,而是一个属性过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D是错误的.
首先排除B与C.不是传值就是传址,所以B与C要么都正确,要么都错误.
作为参数,无论是传址还是传值,都可以用同一个变量作为多个参数的实参.
首先排除B与C.不是传值就是传址,所以B与C要么都正确,要么都错误.
作为参数,无论是传址还是传值,都可以用同一个变量作为多个参数的实参.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询