dim aa(0) as bytei=aa()

i=aa(0)有什么区别?

解决方案 »

  1.   

    i=aa() '返回数组的地址i=aa(0) '返回数组aa(0)的值
      

  2.   

    i=aa(0) '返回数组aa(0)的值
    这个我明白 i=aa() '返回数组的地址 这句不太明白 地址会是什么样的值取出地址后怎么用呢
      

  3.   

    程序中是这样用的 mscomm1.output=a()这句是什么意思呢?
    串口 输出 一个地址 是什么意思?
      

  4.   

    i=aa() '将aa这整个数组赋给i i=aa(0) '把数组aa中的第一个元素aa(0)的值赋给i
      

  5.   

    mscomm1.output=a() 
    是将A()的地址赋值给串口.
    那就表示串口从A()占用地址处开始读取数据,即读取A数组里面的数据
      

  6.   

    dim aa(0) as byte
    dim i as long 
    aa(0)=7
    i=aa()
    msgbox i  '谁能告诉我此处的i是多少
    i=aa(0)
    msgbox i
      

  7.   

    i=aa()传的确实不是地址,而是整个数组赋值
      

  8.   

    dim aa(0) as byte 
    dim i as long 
    aa(0)=7 
    i=aa() 
    msgbox i  '谁能告诉我此处的i是多少,对于aa数组来说,aa只有一个值aa(0) 那再次请问此处的i是多少.
    建议自己去试一下.
      

  9.   

    感谢大家对这个问题的关注,到目前为止,我还是没有搞清楚具体i=aa() 的意思。
    希望大家继续讨论,如果能讨论出更深的问题和答案。
    我还可以加分。我会公平分配的。
    平常我的问题不多,还有不少分没有用。
      

  10.   

    MSComm控件的Output属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。
    你的
    Dim aa(0) As Byte
    i = aa()
    正是先把一个Byte数组放置到Variant类型的变量里,注意,并不是把地址放在i中,而是整个数组的所有元素都放置到i的内存空间中,然后
    MSComm1.Output = i
    正是按照上边的要求“发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性”。
    所以,总而言之,在此情况下,i = aa()是整个数组赋值。
      

  11.   

    如果直接执行
    mscomm1.output=a()
    由于output是Variant类型的,所以,就是把a数组整个赋值给output属性,
    而非a数组的地址赋值给output属性。
      

  12.   

    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还是同一个数值?
    '数组大小改变了.值也改变了.为什么返回的都是同一个值? 
    '即然是数数的值,为什么都是同样的?
    '因此,我认为此值是装载数组的地址.
    '赋给别的数的时候,如果其类型与赋值前的数组类型相同,刚对其进行相同的处理.如果都是相同类型的数组会感觉是对数组赋值.
      

  13.   

    在C语言里面.
    数组是怎么处理的?
    我不懂C.只知道C里面指针的操作很多.
    不知谁能解说一下.
    也许对此问题能解释清楚.
      

  14.   

    在c语言里,数组名即是数组首地址。
    但vb与c不同。
      

  15.   


    i=aa() ,i 是数组变量;i=aa(0),i是数组元素变量。
      

  16.   


    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相同,难道它们是共用空间?!
      

  17.   

    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的类型有关
      

  18.   

    输出为false,正是说明是整个数组赋值給Variant变量,
    而不是将数组地址赋值给Variant变量。
      

  19.   


    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
      

  20.   

    能说明vb中这些情况都是数组赋值的代码太多了,实实在在地讲,
    这本来也应该算是vb的基础知识啊。以己昏昏,怎么令人昭昭?
    回答问题要负责任,不要误导了初学者。
      

  21.   

    正如大家所说的,回答问题要负责任.
    不知又有几个去找了资料.
    现在我给出官方的资料.
    是的,
    i = aa() 
    I返回的不是地址,但却是指针.(前面我有说过,用C语言可以解释清楚)
    因为我不了解C.不知地址与指针的区别.以下引用官方的说明:
    由于数组是对象,因此它和其他对象类型一样,可以用在赋值语句中。数组变量持有一个指针,它指向构成数组元素的数据及秩和长度信息,赋值语句仅复制此指针。
    红色字体是官方给出的说明.文字出处:
    http://msdn.microsoft.com/zh-cn/library/kkwd0xy9(VS.80).aspx
      

  22.   

    这样解释,有些牵强
    Private Sub Form_Load()
    Dim b(0) As Byte
    Debug.Print IsObject(b)
    End Sub
      

  23.   

    vb.net和VB,真的不是同一种语言 
      

  24.   

    我还以为是什么呢,
    什么VB VB.NET
    呵呵,你说那是.NET的东西,行你把VB6的代码写好,
    然后用VS.NET翻译成.NET看看是怎么写的,用法会不会变.
    .NET简直是大变样,
    这两个平台不是一句话就可以解释清楚的,
    但我不得不承认语言本身就是相通的.
    如VB中if a= 0 then 
    DELPHI中也差不多吧if a:=0 then ....
    只是大家的写法有些不同,
    当然你会说C++不一样啦
    有什么不一样
    if () else嘛, 写法不一样,关键字不一样,
    其实用什么编程工具不重要,看的是你会了不,只是我自己的一点看法,不对的地方请指教.乱骂一通的就免了吧.
      

  25.   

    刚和一个朋友聊,有说到以下几点:VB
    VB。NET
    VC等都是微软出的。对的都是开发出来啊在VC 与VB.NET中,对于数组的引用都是用到指针。
    这个指针就是指向数组的一个数值,
    VB 中如果不是。那是不是说微软为了VB.而去再设计一套数组的结构代码》
    其次:
    对于数组的存诸来说。他是有N个数的集合。
    他一定要有个说明,这个集合内有多少个数组,怎么存诸的。
    我相信VB里面也有。当去引用的时候,是不是要先去引用这些信息?
    不会说VB中不保存这些信息吧。如果真不保存这些信息。那怎么知道他是几维数,有多少个?分配了多少空间。
      

  26.   

    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()真是一怪胎
      

  27.   

    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,可以从这里想想各位讨论学术,完全没有必要生气,更不要进行人身攻击,也最好不要说教!
    希望都能心平气和地进行
      

  28.   

    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一维数组结构
      

  29.   

    csdn是技术论坛,回答别人提出的技术问题,应该认真负责,
    要有基本的严谨精神。当然严谨并不排斥猜想,但是不要将
    猜想简单当成结论。
      

  30.   

    有些不明白你上面说的
    有管中窥豹之嫌。是什么意思,语文太差,麻烦说明白点,我也没有下结论,都说了只是自己的一点看法,不对还请说明白.所以说得详细点,CSDN没有说限制一次只能发20个字吧
      

  31.   

    这两个平台不是一句话就可以解释清楚的, 
    但我不得不承认语言本身就是相通的. 
    如VB中if a= 0 then 
    DELPHI中也差不多吧if a:=0 then .... 
    只是大家的写法有些不同, 
    当然你会说C++不一样啦 
    有什么不一样 
    if () else 嘛, , 
    ============================
    程序设计语言的差别只是“写法不一样,关键字不一样”?!
      

  32.   

    我想说一句。
    猜想。
    实践。我看有好多人都在猜想。
    有几个去实践了。因为有些地方站不住脚了,就说猜想了。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了。
    其实。
    这个贴子到了现在。
    我相信有很多人都学到了一些什么。而这些由我一个问题而引出来的。没有人说一声谢谢。而只是指责与辱骂。
    (如此这样的人当我的弟子,我不是不会收的。
    不知某些人会收不。)我想问一句:
    你们在回贴的时候,你说出来的都去实践过或有资料佐证吗?能说出出处吗?如果没有:是不是表示都是猜想?那请在回贴之前:声明一句:以下全是猜想。希望以后不要自己打自己的嘴巴。
      

  33.   

    当然,关于数组及对象的存储方式,及其寻址方式等一些信息。如果LZ找我,我是会和他讲的。
    我相信LZ也知道我的联系方式。我说过。对于不尊重老师的人,我是不会教的。