dim aa(0) as byte dim i as long aa(0)=7 i=aa() msgbox i '谁能告诉我此处的i是多少,对于aa数组来说,aa只有一个值aa(0) '如果此处不是地址,是整个数组的值?那上面例子中的AA整个数组的值是多少? '建议自己去试一下. '你可以再引申一下. '上面的例子中只是有一个 aa(0)的值. '你将aa(0)的值无论改为多少.i的返回值都是一个? 如果是整个数组的值?为什么i的值一直不变. '你们说数组值只有一个.所以有保持一个值. '现在将aa(0)改为aa(N) 将其变为一个有多项的数组. '你对每一个进行赋值. '你再运行发现I还是同一个数值? '数组大小改变了.值也改变了.为什么返回的都是同一个值? '即然是数数的值,为什么都是同样的? '因此,我认为此值是装载数组的地址. '赋给别的数的时候,如果其类型与赋值前的数组类型相同,刚对其进行相同的处理.如果都是相同类型的数组会感觉是对数组赋值.
Private Sub Form_Load() Dim aa(0) As Byte Dim bb(0) As Byte Dim I As Long Dim J As Long I = aa() J = bb() MsgBox I & vbNewLine & J End Sub 试试这段代码结果I和J相同,难道它们是共用空间?!
Private Sub Form_Load() Dim aa(2) As Byte Dim i As Variant aa(0) = 12 i = aa() aa(0) = 22 Debug.Print aa(0) = i(0) End Sub 看来是和i的类型有关
Private Sub Form_Load() Dim aa(0) As Byte Dim i As Long aa(0) = 7 i = aa() Debug.Print i '如果这儿是装载数组的地址,如下面是什么? Debug.Print VarPtr(aa(0)) Debug.Print VarPtr(i) i = aa(0) Debug.Print i End Sub
Public Declare Function VarPtrArray Lib "msvbvm60.dll" _Alias "VarPtr" (ptr() As Any) As Long dim aa(0) as byte dim i as long debug.print varPtrArray(aa) i=aa() debug.print i调试一下Public Declare Function VarPtrArray Lib "msvbvm60.dll" _Alias "VarPtr" (ptr() As Any) As Long dim aa(0) as byte dim i as long print varPtrArray(aa) i=aa() print i试一下发现, dim aa(0) as byte dim i as long i=aa()真是一怪胎
Public Declare Function VarPtrArray Lib "msvbvm60.dll" _Alias "VarPtr" (ptr() As Any) As Long dim aa(0) as byte dim i as long print varPtrArray(aa) i=aa() print i 这一段是指:编译后运行一下看看 -------------------vb 用的safeArray,可以从这里想想各位讨论学术,完全没有必要生气,更不要进行人身攻击,也最好不要说教! 希望都能心平气和地进行
Type SafeArray1d '1维数组的 SafeArray 定义cDims As Integer '维数fFeatures As Integer '标志cbElements As Long '单个元素的字节数clocks As Long '锁定计数pvData As Long '指向数组元素的指针cElements As Long '维定义,该维的元素个数Lbound As Long '该维的下界End Type vb6一维数组结构
这两个平台不是一句话就可以解释清楚的, 但我不得不承认语言本身就是相通的. 如VB中if a= 0 then DELPHI中也差不多吧if a:=0 then .... 只是大家的写法有些不同, 当然你会说C++不一样啦 有什么不一样 if () else 嘛, , ============================ 程序设计语言的差别只是“写法不一样,关键字不一样”?!
我想说一句。 猜想。 实践。我看有好多人都在猜想。 有几个去实践了。因为有些地方站不住脚了,就说猜想了。dim aa(0) as byte dim i as long aa(0)=7 i=aa() msgbox i '谁能告诉我此处的i是多少 i=aa(0) msgbox i 不是我提出这样的问题后。某些人再去实践我想现在有很多人都在猜想:dim aa(0) as byte dim i as long aa(0)=7 i=aa() msgbox i此处的i 返回是7了。 其实。 这个贴子到了现在。 我相信有很多人都学到了一些什么。而这些由我一个问题而引出来的。没有人说一声谢谢。而只是指责与辱骂。 (如此这样的人当我的弟子,我不是不会收的。 不知某些人会收不。)我想问一句: 你们在回贴的时候,你说出来的都去实践过或有资料佐证吗?能说出出处吗?如果没有:是不是表示都是猜想?那请在回贴之前:声明一句:以下全是猜想。希望以后不要自己打自己的嘴巴。
这个我明白 i=aa() '返回数组的地址 这句不太明白 地址会是什么样的值取出地址后怎么用呢
串口 输出 一个地址 是什么意思?
是将A()的地址赋值给串口.
那就表示串口从A()占用地址处开始读取数据,即读取A数组里面的数据
dim i as long
aa(0)=7
i=aa()
msgbox i '谁能告诉我此处的i是多少
i=aa(0)
msgbox i
dim i as long
aa(0)=7
i=aa()
msgbox i '谁能告诉我此处的i是多少,对于aa数组来说,aa只有一个值aa(0) 那再次请问此处的i是多少.
建议自己去试一下.
希望大家继续讨论,如果能讨论出更深的问题和答案。
我还可以加分。我会公平分配的。
平常我的问题不多,还有不少分没有用。
你的
Dim aa(0) As Byte
i = aa()
正是先把一个Byte数组放置到Variant类型的变量里,注意,并不是把地址放在i中,而是整个数组的所有元素都放置到i的内存空间中,然后
MSComm1.Output = i
正是按照上边的要求“发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性”。
所以,总而言之,在此情况下,i = aa()是整个数组赋值。
mscomm1.output=a()
由于output是Variant类型的,所以,就是把a数组整个赋值给output属性,
而非a数组的地址赋值给output属性。
dim i as long
aa(0)=7
i=aa()
msgbox i
'谁能告诉我此处的i是多少,对于aa数组来说,aa只有一个值aa(0)
'如果此处不是地址,是整个数组的值?那上面例子中的AA整个数组的值是多少?
'建议自己去试一下.
'你可以再引申一下.
'上面的例子中只是有一个 aa(0)的值.
'你将aa(0)的值无论改为多少.i的返回值都是一个? 如果是整个数组的值?为什么i的值一直不变.
'你们说数组值只有一个.所以有保持一个值.
'现在将aa(0)改为aa(N) 将其变为一个有多项的数组.
'你对每一个进行赋值.
'你再运行发现I还是同一个数值?
'数组大小改变了.值也改变了.为什么返回的都是同一个值?
'即然是数数的值,为什么都是同样的?
'因此,我认为此值是装载数组的地址.
'赋给别的数的时候,如果其类型与赋值前的数组类型相同,刚对其进行相同的处理.如果都是相同类型的数组会感觉是对数组赋值.
数组是怎么处理的?
我不懂C.只知道C里面指针的操作很多.
不知谁能解说一下.
也许对此问题能解释清楚.
但vb与c不同。
i=aa() ,i 是数组变量;i=aa(0),i是数组元素变量。
Private Sub Form_Load()
Dim aa(0) As Byte
Dim bb(0) As Byte
Dim I As Long
Dim J As Long
I = aa()
J = bb()
MsgBox I & vbNewLine & J
End Sub
试试这段代码结果I和J相同,难道它们是共用空间?!
Dim aa(2) As Byte
Dim i As Variant
aa(0) = 12
i = aa()
aa(0) = 22
Debug.Print aa(0) = i(0)
End Sub
看来是和i的类型有关
而不是将数组地址赋值给Variant变量。
Private Sub Form_Load()
Dim aa(0) As Byte
Dim i As Long
aa(0) = 7
i = aa()
Debug.Print i '如果这儿是装载数组的地址,如下面是什么?
Debug.Print VarPtr(aa(0))
Debug.Print VarPtr(i)
i = aa(0)
Debug.Print i
End Sub
这本来也应该算是vb的基础知识啊。以己昏昏,怎么令人昭昭?
回答问题要负责任,不要误导了初学者。
不知又有几个去找了资料.
现在我给出官方的资料.
是的,
i = aa()
I返回的不是地址,但却是指针.(前面我有说过,用C语言可以解释清楚)
因为我不了解C.不知地址与指针的区别.以下引用官方的说明:
由于数组是对象,因此它和其他对象类型一样,可以用在赋值语句中。数组变量持有一个指针,它指向构成数组元素的数据及秩和长度信息,赋值语句仅复制此指针。
红色字体是官方给出的说明.文字出处:
http://msdn.microsoft.com/zh-cn/library/kkwd0xy9(VS.80).aspx
Private Sub Form_Load()
Dim b(0) As Byte
Debug.Print IsObject(b)
End Sub
什么VB VB.NET
呵呵,你说那是.NET的东西,行你把VB6的代码写好,
然后用VS.NET翻译成.NET看看是怎么写的,用法会不会变.
.NET简直是大变样,
这两个平台不是一句话就可以解释清楚的,
但我不得不承认语言本身就是相通的.
如VB中if a= 0 then
DELPHI中也差不多吧if a:=0 then ....
只是大家的写法有些不同,
当然你会说C++不一样啦
有什么不一样
if () else嘛, 写法不一样,关键字不一样,
其实用什么编程工具不重要,看的是你会了不,只是我自己的一点看法,不对的地方请指教.乱骂一通的就免了吧.
VB。NET
VC等都是微软出的。对的都是开发出来啊在VC 与VB.NET中,对于数组的引用都是用到指针。
这个指针就是指向数组的一个数值,
VB 中如果不是。那是不是说微软为了VB.而去再设计一套数组的结构代码》
其次:
对于数组的存诸来说。他是有N个数的集合。
他一定要有个说明,这个集合内有多少个数组,怎么存诸的。
我相信VB里面也有。当去引用的时候,是不是要先去引用这些信息?
不会说VB中不保存这些信息吧。如果真不保存这些信息。那怎么知道他是几维数,有多少个?分配了多少空间。
dim aa(0) as byte
dim i as long
debug.print varPtrArray(aa)
i=aa()
debug.print i调试一下Public Declare Function VarPtrArray Lib "msvbvm60.dll" _Alias "VarPtr" (ptr() As Any) As Long
dim aa(0) as byte
dim i as long
print varPtrArray(aa)
i=aa()
print i试一下发现,
dim aa(0) as byte
dim i as long
i=aa()真是一怪胎
dim aa(0) as byte
dim i as long
print varPtrArray(aa)
i=aa()
print i
这一段是指:编译后运行一下看看
-------------------vb 用的safeArray,可以从这里想想各位讨论学术,完全没有必要生气,更不要进行人身攻击,也最好不要说教!
希望都能心平气和地进行
vb6一维数组结构
要有基本的严谨精神。当然严谨并不排斥猜想,但是不要将
猜想简单当成结论。
有管中窥豹之嫌。是什么意思,语文太差,麻烦说明白点,我也没有下结论,都说了只是自己的一点看法,不对还请说明白.所以说得详细点,CSDN没有说限制一次只能发20个字吧
但我不得不承认语言本身就是相通的.
如VB中if a= 0 then
DELPHI中也差不多吧if a:=0 then ....
只是大家的写法有些不同,
当然你会说C++不一样啦
有什么不一样
if () else 嘛, ,
============================
程序设计语言的差别只是“写法不一样,关键字不一样”?!
猜想。
实践。我看有好多人都在猜想。
有几个去实践了。因为有些地方站不住脚了,就说猜想了。dim aa(0) as byte
dim i as long
aa(0)=7
i=aa()
msgbox i '谁能告诉我此处的i是多少
i=aa(0)
msgbox i 不是我提出这样的问题后。某些人再去实践我想现在有很多人都在猜想:dim aa(0) as byte
dim i as long
aa(0)=7
i=aa()
msgbox i此处的i 返回是7了。
其实。
这个贴子到了现在。
我相信有很多人都学到了一些什么。而这些由我一个问题而引出来的。没有人说一声谢谢。而只是指责与辱骂。
(如此这样的人当我的弟子,我不是不会收的。
不知某些人会收不。)我想问一句:
你们在回贴的时候,你说出来的都去实践过或有资料佐证吗?能说出出处吗?如果没有:是不是表示都是猜想?那请在回贴之前:声明一句:以下全是猜想。希望以后不要自己打自己的嘴巴。
我相信LZ也知道我的联系方式。我说过。对于不尊重老师的人,我是不会教的。