VB关于变量传值的问题

作者&投稿:成王邦 (若有异议请与网页底部的电邮联系)
VB中查询出来的记录条数如何传值给某个变量~

rs.Open "select count(*) from cj", conn, adOpenStatic, adLockOptimistic, adCmdText
a=rs.fields(0)

?你的问题是?

给你详细点,,注意主函数的z和p1函数的z不一样,在用call调用时,始终没调用主函数中的z,所以print输出时,z始终是2,p1函数中z默认开始为0。另外区别下传值和传地址,x没被定义,默认为byref传址,意思是当x变化时,相应的参数值(a或b)也变化,而y定义为byval传值,当y变化时,相应的参数(a或b)不会发生变化。
第一次:
a = 1: b = 3: z = 2
Call p1(a, b) 这步是把a=1,b=2调入p1函数中运算,z不调用,及x=a=1,y=b=3,
p1函数中:x=x+z=1+0=1,.
y=x-z=1-0=1,
z=10-y=10-1=9,
返回时,由于只有x是传地址,所以才会变化,所以a=x=1,而b都不会随着参数变化而变化,z已在上面说明,所以b=3,z=2。
输出a,b,c为 1,3,2

第二次:
Call p1(b, a) 注意这次x=b=3 ,y=a=1,z不调用,p1函数中的z用staic定义过,所以这次是上次计算结果9.
x=x+z=b+z=3+9=12
y=x-z=12-9=3
z=10-y=10-3=7
第二次返回时,b=x=12,而y是传值,所以a还是原值1,同样z也没调入,同样是2
输出a,b,c为 1,12,2

这道题目很阴啊,有几个要注意的地方,一是上下两段中的z不是同一个z,所以说sub p1里的z的改变不会影响sub里z的值,所以z一直是2。二是sub p1中的z是静态变量,没有赋初值,默认为0,在其发生改变后第二次调用sub p1仍会保留上次的值(第一次调用会把z变为9,然后第二次调用的时候z还是9,而不是0)。三是sub p1中两个变量的传值方式,一个没有加byval,一个加了,没加的话是按地址传值,sub p1中变量值的改变会影响传给他的那个变量,加了byval就不会影响。注意了这三点应该就能理解答案了

a = 1: b = 3: z = 2
Call p1(a, b)
Print a, b, z
Call p1(b, a)
Print a, b, z
(z 是不变的)
Call p1(a, b)
这里就不多说了 相信你也能计算出来
Call p1(b, a)
这里面 Static z As Integer
已经告诉在Private Sub p1(x As Integer, ByVal y As Integer)
他是私有的 计算结果与 a = 1: b = 3: z = 2
没有关系

你想实现什么功能啊


VB关于变量传值的问题
另外区别下传值和传地址,x没被定义,默认为byref传址,意思是当x变化时,相应的参数值(a或b)也变化,而y定义为byval传值,当y变化时,相应的参数(a或b)不会发生变化。第一次:a = 1: b = 3: z = 2 Call p1(a, b) 这步是把a=1,b=2调入p1函数中运算,z不调用,及x=a=1,y=...

VB中关于传值和传地址的问题?
a和b是传值,也就是把x和y的值分别复制到a和b中,然后进行计算;c是传地址,也就是把z命名一个别称叫c,对c的任何改变都会体现到z中,就像一个人有学名有小名,但都是指同一个人。因此,z=c=a+b=5+7=12

关于vb中参数传递的问题
1、变量是为程序分配的一段内存空间,程序通过变量名读写内存,显然变量名与这段内存空间的首地址对应。2、第一个参数传值,表示x变量是a变量的副本,即x的类型和初始值与a相同,但它们有各自的内存空间,在函数过程中无论如何改写x,都与a无关。2、第二个参数传址,表示y变量是b变量的别名,即b...

VB 传值传址问题
因为变量X是定义在过程外的,是模块级的变量。而Y则没有定义,是过程级的变量,每个过程都是新的。

VB 传值和传址的问题!急!请VB高手进!
c = *pc; \/\/将指针pc所指处的内存值赋给变量c \/\/用指针赋值: *pc = 'Y' \/\/将'Y'赋给指针pc所指内存变量里。 \/\/指针移动: pc++; pl--; } 这些对指针操作在VB里都有等同的东西,前面讨论ByVal和ByRef时曾说过传指针和传地址是一回事,实际上当我们在VB里用缺省的ByRef声明函数参数时,我们已经就声...

一道VB传值和传址题
题目有问题 没特别应该a1和c1按地址传b1+3按值传 另外答案Sub:2 6 4 Main:2 2 4 除非有东西漏写了 下我理解漏写了些东西代码 Private Sub Sub1(p,m,n)p = p + 1:m = m + 1:n = n + 1 Print "sub1:";p;m;n End Sub Private Sub Command1_Click()a1 = 1:b1 = 2:c...

VB form间传值问题
'以下为form1中的代码 dim a as double dim b as long a=form2.a b=form.b '以下是form2中的代码 '在声明中添加 public a as double public b as long '为了在窗体间传递数据,要在窗体级事件中把提供数据的函数定义为 public (公用)模式 '例子:public 函数 as 数据类型 ...

关于形参与实参值传递的问题?
函数传递方式两种,一种是传值,在VB中用关键词ByVal说明,还有一种是传址,VB默认是传址。传址如果函数里改变了参数的值,那调用函数的地方实参也会跟着改变,传值函数改变其形参值实参不改变。综合来看只有b是传址,所以b在函数体内执行了b=2+1=3,所以输出了这个结果。

对于刚才那道vb题您的解答还有几点不懂,另外提问。
第一问:传址的时候因为是将变量的地址直接传递给参数,这个时候涉及到两个内存地址的大小和类型,所以如果类型不匹配,就会产生错误提示。而对于传值来说,就没有这个限制,因为你传递的仅仅是“值”。但是传值不是说就不会产生错误,例如:Dim X as String X = "A"Sub Proc(byval a as Integer...

vb6.0 关于传值传址
swap1是传值,所以它内部对x和y做任何修改都不会影响到a和b的值,所以swap1运行完毕后a和b的值是不变的;而swap2是传址,所以x与a、y与b所指向的是同一个内存地址,换句话说就是它们实际上是同一个变量,所以函数内部对x和y所做的任何修改都会直接反映到a和b,因此swap2运行完毕后a和b的值...

孝义市18847331633: VB关于变量传值的问题 -
赞寇三七: 给你详细点,,注意主函数的z和p1函数的z不一样,在用call调用时,始终没调用主函数中的z,所以print输出时,z始终是2,p1函数中z默认开始为0.另外区别下传值和传地址,x没被定义,默认为byref传址,意思是当x变化时,相应的参数值(a...

孝义市18847331633: VB关于变量传值的问题 -
赞寇三七: c为 1,12,所以才会变化,所以a=x=1,而b都不会随着参数变化而变化,返回时,在用call调用时,所以print输出时,z始终是2,p1函数中z默认开始为0,当y变化时,b.另外区别下传值和传地址,c为 1,3,2第二次,同样是2输出a,同样z也没调入...

孝义市18847331633: VB过程传值问题 -
赞寇三七: x也保留是因为VB按默认的方式,在调用时a是“传址”,在调用过程中a与z同步变化,所以,当调用时z的传改变时,a的值 也变了.而z是一个局部变量,它只在过程内部有效;当调用返回时它就失效了.下次调用时又重新开辟.更何况在过程内部,每次调用时都x和y的值重新计算赋值,所以上次调用时的值就对本次调用不会产生影响了.

孝义市18847331633: vb中传递数值 -
赞寇三七: 有三种方法 一种是:建立一个moudles 然后定义一个public 变量 然后两个form可以共用这个变量 另一种是:在form1的通用里面定义一个public 变量 然后在form2里面用 form1.变量名 还有一种是:在form2通用里定义一个public 变量 然后form1里面使用 form2.变量名=值 form2.show

孝义市18847331633: vb当中,参数传递默认方式是传值?传址?还是传址和传值? -
赞寇三七: 传址会把变量的内存地址传递到sub里,在sub里对变量所做的修改就是对原来的变量进行修改,而传值只是把变量的值传递到sub里,此时在sub里修改变量的值不会影响原来的变量. 在vb中调用函数默认是传址(byref),你可以在函数的参数前加byval使用传值方式. Private Sub test(a, ByRef b, ByVal c) a和b都是传址,c是传值

孝义市18847331633: VB中数据传递的传值和传址的区别 -
赞寇三七: 简单点说,传址过去的话其值可以被该函数或过程改变,传值则不会.如 Private Sub Command1_Click() Dim a As Integer a = 3 Call test(a) Debug.Print a '这时结果为5 End Sub Sub test(ByRef chgA As Integer) chgA = 5 End Sub

孝义市18847331633: VB的参数传递问题ByVal是传值,这我知道但是ByRef和默
赞寇三七: 指针和引用是c语言里面的概念,而且它们的作用也差不多.ByRef和默认是相同的.

孝义市18847331633: VB中窗体之间怎么传值? -
赞寇三七: 可以声明一个全局变量.比如在form1里声明一个 public str1 as string 然后在form2就可以使用form1.str1="hello,world" (VB6) 或者把这个全局变量在模块里声明. 那么无论哪个窗体都可以直接调用.

孝义市18847331633: vb过程的参数传递方式有哪些? -
赞寇三七: 参数的传递有两种方式:按值传递和按地址传递.按值传递参数时,传递的只是变量的 副本.如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身.用ByVal关键 字指明参数是按值来传递的,例如,下面的语句说明参数intAcctN...

孝义市18847331633: 关于VB数组里面按值传递和按地址传递的区别 -
赞寇三七: 1 Private Sub Form_Load()2 Dim x As Integer3 x = 24 A x5 Debug.Print x6 End Sub7 Sub A(ByRef t As Integer)8 t = t - 19 End Sub10 Sub B(ByVal t As Integer)11 t = t - 112 End Sub13 Sub C(t As Integer)14 t = t - 115 End Sub 这是一个极为简单的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网