CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

能不能把一个数组作为参数传给Array???????????????

楼主uu_snow(薇薇)2001-11-08 12:12:37 在 VB / 基础类 提问

对于:  
  someVariant=Array   ("123","456","789")  
  我想改成传数组的方式,就是说,  
  "123","456","789"  
  是预先存在一个数组中的:  
  arr(0)="123"  
  arr(1)="456"  
  arr(2)="789"  
  我使用:  
  someVariant=Array   (   arr   )  
  这样的语句报错  
  我应该怎么传这个数组呢? 问题点数:20、回复次数:3Top

1 楼foolishtiger(冬蛩)回复于 2001-11-08 12:29:27 得分 10

Option   Explicit  
   
  '         Purpose:  
  '           Author:吴文智  
  '               Date:2001-11-08  
  'Description:要试用本例请在窗体中填加一个按钮  
  '                         然后在代码窗体中粘贴如下代码  
  '                         Good   luck!  
   
  Private   Sub   Command1_Click()  
          Dim   arr(2)   As   String  
          arr(0)   =   "123"  
          arr(1)   =   "456"  
          arr(2)   =   "789"  
   
          TestArray   arr  
  End   Sub  
   
  Private   Sub   TestArray(ByVal   A   As   Variant)  
          Dim   lngIndex   As   Long  
           
          For   lngIndex   =   LBound(A)   To   UBound(A)  
                  MsgBox   A(lngIndex)  
          Next  
  End   Sub  
   
   
  Top

2 楼uguess(天地间,有我在行走!)回复于 2001-11-08 12:44:46 得分 10

数组的高级功能  
   
   
  尽管数组最通常被用来存储成组的变量,但是在别的一些方面数组也是很有用的。可以将一个数组的内容赋值给另一个数组、创建返回数组的函数,还可以创建返回数组的属性。在许多情况下,这些技术能改进应用程序的性能。  
   
  数组赋值  
  正如可以将一个变量的值赋给另一个变量,例如   strA   =   strB   ,也可以将一个数组的内容赋给另一个数组。试想,例如,要将一组字节从一个位置复制到另一个位置。可以通过每次复制一个字节来实现,象这样:  
   
  Sub   ByteCopy(oldCopy()   As   Byte,   newCopy()   As   Byte)  
        Dim   i   As   Integer  
        ReDim   newCopy   (Lbound(oldCopy)   To   UBound(oldCopy)  
   
        For   i   –   Lbound(oldCopy)   To   Ubound(oldCopy)  
              newCopy(i)   =   oldCopy(i)    
        Next  
  End   Sub  
   
  一个更有效的方法就是将一个数组赋给另外一个数组:  
   
  Sub   ByteCopy(oldCopy()   As   Byte,   newCopy()   As   Byte)  
        newCopy   =   oldCopy  
  End   Sub  
   
  关于变量赋值有一些规则需要铭记。例如,虽然可以将一个声明为整型的变量赋给一个声明为长整型的变量而不会产生任何问题,但是将一个长整型变量赋给一个整型变量就很容易导致溢出错误。除了有关数据类型的规则外,数组赋值还要遵从另外一些规则,包括数组维数,每一维的大小,以及数组是固定的还是动态的。  
   
  给维数和/或数据类型不同的数组赋值的尝试,可能成功,也可能失败,这取决于以下几个因素:    
   
  赋值符左边的数组类型:固定数组   (Dim   x(1   to   10)   As   Integer)   或者动态数组   (Dim   x()   As   Integer)。  
   
   
  赋值符左边数组的维数是否和赋值符右边数组的维数匹配。  
   
   
  赋值符两边数组的每一维的数组元素个数是否匹配。即使数组的声明不同,维数也可能匹配。比如一个数组的每一维元素从   0   开始编号而另一个则从   1   开始,维数也可能匹配。  
   
   
  赋值符两边所有元素的数据类型必须是相容的。这些规则和变量赋值的规则是一致的。    
  下表显示了这些因素的影响:  
   
  左边数组   维数是否匹配   元素个数是否匹配   赋值的结果    
  动态   否   是或否   成功。如果需要,左边将重新声明   (ReDim)   使其与右边匹配。    
  动态   是   否   成功。如果需要,左边将重新声明   (ReDim)   使其与右边匹配。    
  动态   是   是   成功。    
  固定   是或否   是或否   失败并返回一个编译错误。    
   
   
  错误可能发生在编译时,也可能发生在运行时(例如,如果数据类型不能强制转换或赋值试图重新声明   (ReDim)   一个固定大小的数组)。作为程序员,其任务就是添加错误处理以确保数组在赋值之前是相容的。  
   
  从函数返回数组  
  从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。  
   
  下面是一个返回字节数组的函数的简单示例:  
   
  Private   Sub   Form_Load()  
        Dim   b   As   Byte  
        Dim   I   As   Integer  
        Dim   ReturnArray()   As   Byte  
        i     =   Cbyte(54)  
        ReturnArray()   =   ArrayFunction(b)  
        For   i   =   0   To   Ubound(ReturnArray)  
              Debug.Print   ReturnArray(i)  
        Next  
  End   Sub  
   
  Public   Function   ArrayFunction(b   As   Byte)   As   Byte()  
        Dim   x(2)   As   Byte  
        x(0)   =   b  
        x(1)   =   b   +   CByte(200)  
        x(2)   =   b   +   b  
        ArrayFunction   =   x        
  End   Function  
   
  在运行以上示例后,   ReturnArray()   是一个三元素数组,其中包含了分配给   ArrayFunction   中数组的值。注意,Exit   Function   语句将一个数组作为参数传递;且数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。  
   
  注意       尽管可以通过赋值给另一个数组(ArrayFunction   =   x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。  
   
  必须为返回数组的函数指定一个类型;这个类型可以是   Variant。这样一来,Function   X()   As   Variant()   是有效的而   Function   X()   As   ()   将失败。  
   
  当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数相同,否则将显示一个“类型不匹配”的错误。  
   
  详细信息       关于使用数组的详细内容,请参阅“编程基础”中的“数组”部分。关于从属性返回数组的信息,请参阅“使用对象编程”中的“使用属性过程工作”。  
  Top

3 楼xsbchen(我最酷)回复于 2001-11-08 13:36:09 得分 0

MoveMemoryTop

相关问题

  • 请教:我有一个动态数组怎样作为参数传给一个存储过程?
  • 如何把一个数组,通过引用的办法传给一个函数作参数呢?
  • 怎样用数组参数?
  • 如何将ActiveX里的数组以Array的形式通过连接点传给javascript
  • vbScript 怎样把数组传给vb的数组
  • 数组参数问题:arystr:array of string,其中的arystr[1,1]是什么类型的数据?困扰两天了.
  • openwithparm()能否传递数组参数
  • 〓〓〓关于数组作参数的问题〓〓〓
  • 〓〓维数组做参数的问题〓〓
  • 怎么向函数传数组参数?

关键词

  • 函数
  • 数据
  • 属性
  • 转换
  • 数组
  • 赋值
  • oldcopy
  • 变量
  • 维数
  • arrayfunction

得分解答快速导航

  • 帖主:uu_snow
  • foolishtiger
  • uguess

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo