精华内容
下载资源
问答
  • 其次根据是否可以被重新定义,数组可以分为静态数组和动态数组。一维数组与多维数组一维数组,即上节课程介绍的形式,也是默认情况下的数组形式,一维数组特点是只有一个下标。例如定义一个含有5个元素的一维数组,...
    上节课我们已经学习了数组的基本概念,本节课程我们来一起学习数组的分类,以及它们的声明方法。数组分类:首先根据维数,数组可以被分为一维数组和多维数组。其次根据是否可以被重新定义,数组可以分为静态数组和动态数组。一维数组与多维数组一维数组,即上节课程介绍的形式,也是默认情况下的数组形式,一维数组特点是只有一个下标。例如定义一个含有5个元素的一维数组,其在内存中的形式如下图所示:a589849936a7f953b5d91ca98da32030.png二维数就是数组里有数组。实际上,二维数组就是在一维数组的基础上,每个元素不在是一个具体的数据类型,而是再存储一个一维数组二维数组有两个下标。比如A(5,3)这个二维数组。其共有6*4=24个元素。分别是A(0,0)、A(0,1)...A(5,2)、A(5,3)这24个元素。我们可以将其想象为一个Excel表格,其形式如下图所示:f8689eab9a687a6326fd34cf6105970e.png多维数组,同二维数组类似,即三维数组有3个下标,4维数组有4个下标,以此类推。在VB中最多可以定义60维的数组。虽然VB提供了最多60维的数组,但是实际上我们最为常用的是一维数组以及二维数组,有时候会用到三维数组。其它多维数组通常使用的很少。这里小伙伴只要掌握一维数组和二维数组即可。如果今后确实需要用到更高维的数组,其使用方法与一维、二维数组的是一样的。静态数组与动态数组在VB中,数组按照能否被重新定义分为静态数组和动态数组。所谓静态数组,是指在定义时,已经指定了数组的下标,数组长度已经确定,在被定义后,无法再进行更改。动态数组,在某些情况下,不能事先确定数据的具体个数,那么这就可以采用动态数组来解决问题。动态数组与静态数组相反,在定义动态数组时,不需要定义其下标,而在使用动态数组时则需要用Redim语句来重新定义数组,并指定下标。数组的声明像变量一样,我们要使用一个数组前,必须事先进行声明,也就是定义一个数组后,才可以使用它。一维数组声明方法
    Dim 数组名([下标 To] 上标) [as 类型]1:Dim A(5) as integer2:Dim B%(1 To 6)
    说明:1,下标缺省时下标为0,可以用Option Base 1申明缺省下标为1。2,数据类型缺省时,默认为变体型。3,数组名的定义需要符合VB中标识符定义的要求。4,数组长度等于上标-下标+1,数组长度就是数组元素的个数。5,数组名+下标即可确定某个数组元素。以例1来说,A(0)即表示第一个数组元素,A(5)即表示最后一个数组元素。二维数组声明方法
    Dim 数组名([下标1 To] 上标1, [下标2 To] 上标2) [as 类型]1:Dim  Arr(2,4) as String2:Dim B$(1 To 3,1 To 5)
    动态数组声明方法建立动态数组要分两步:第1步,用Dim语句声明数组,但不能指定数组大小
    Dim 数组名() as 数据类型
    第2步,用ReDim语句动态的分配元素个数
    ReDim [preserve] 数组名(下标1[,下标2...])
    例:Dim s() as SingleSub Form_Load()    ...    ReDim s(2,3)    ...    ReDim Preserve s(4,8)    ...End sub
    注意:在重新用redim定义数组后,数组内的数据全部清除。如需要保留之前的数据,则需要在定义时用 preserve 声明一下。即不加preserve关键词,那么该数组之前的数据将会全部被初始化,而使用preserve关键词后,数组之前的数据将会予以保留。使用动态数组时,切记次要点。好了,今天的全部内容就是这样了,我们下节课再见。

    6163aeebc18ee5e9160451d377976cee.png

    展开全文
  • 实例014动态数组

    2020-04-14 17:20:30
    VB.NET保持了VB 6.0就存在的关键字Redim,Redim的作用是重新分配数组元素的个数。 在最初定义数组时,可以不指明它的大小,比如下面这个定义: Dim Words() as String 上面这行代码声明了一个名字叫做Words的...

        VB.NET保持了VB 6.0中就存在的关键字Redim,Redim的作用是重新分配数组元素的个数。
        在最初定义数组时,可以不指明它的大小,比如下面这个定义:
        Dim Words()  as String
        上面这行代码声明了一个名字叫做Words的字符串数组,它的元素个数不确定,当需要使用这个数组时,可以用Redim关键字为它重新声明元素个数:
        Redim Words(10)
        重新声明数组Words后,它有11个元素。

    ReDim 语句 (Visual Basic)

     

    数组变量重新分配存储空间。

    语法

    VB复制

    ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]

    部件

     
    术语 Definition
    Preserve 可选。 修饰符,当仅更改最后一个维度的大小时,用来保留现有数组中的数据。
    name 必需。 数组变量的名称。 请参阅 Declared Element Names
    boundlist 必需。 列出重新定义的数组各个维度的边界。

    备注

    可以使用 ReDim 语句来更改某个已声明数组的一个或多个维度的大小。 如果数组较大,并且你不再需要它的某些元素,ReDim可通过减少数组大小来释放内存。 另一方面,如果数组需要更多元素,也可使用 ReDim 进行添加。

    ReDim 语句仅供数组使用。 它对标量(仅包含单个值的变量)、集合或结构无效。 请注意,如果将变量声明为 Array 类型,则 ReDim 语句将没有足够的类型信息来创建新数组。

    仅可在过程级别使用 ReDim 。 因此,变量的声明上下文必须是过程;而不能是源文件、命名空间、接口、类、结构、模块或块。 有关详细信息,请参阅声明上下文和默认访问级别

    规则

    行为

    • 多个变量。 您可以在同一声明语句中调整多个数组变量的大小,并为每个变量指定 name 和 boundlist 部分。 以逗号分隔多个变量。
    • 数组界限。 boundlist 中的每个条目都可以指定该维度的下限和上限。 下边界始终为 0(零)。 上边界是该维度可能的最大索引值,而不是维度的长度(即上边界加 1)。 每个维度的索引都可能在 0 到其上边界值之间变动。boundlist 中的维数必须与数组的原始维数(秩)相匹配。

    • 数据类型。 ReDim 语句无法更改数组变量或其元素的数据类型。

    • 起始. ReDim 语句不能为数组元素提供新的初始化值。

    • 级别. ReDim 语句无法更改数组的秩(维数)。

    • 用 Preserve 调整大小。 如果使用 Preserve,则只能调整数组最后一个维度的大小。 对于其他每个维度,必须指定现有数组的边界。例如,如果数组只有一个维度,则可以重设该维度的大小并依然保留数组的所有内容,因为你更改的是最后一个也是唯一的维度。 但是,如果数组具有两个或更多维度,则使用 Preserve 只能重设最后一个维度的大小。

    • 属性. 可以对保存值数组的属性使用 ReDim

    • 数组替换。 ReDim 释放现有数组,并创建一个具有相同秩的新数组。 新数组将替换数组变量中已释放的数组。

    • 不保留的初始化。 如果不指定 PreserveReDim 使用其数据类型的默认值初始化新数组的元素。

    • 用 Preserve 初始化。 如果指定 Preserve,Visual Basic 会将元素从现有数组复制到新数组。

    Module Module1

        Sub Main()
            Dim iCount As Integer, jCount As Integer
            Dim Words() As Integer
            Console.WriteLine("多少?")
            iCount = Console.ReadLine

            ReDim Words(iCount)
            Console.Write("现在的下界是:")
            Console.WriteLine(Words.GetLowerBound(0))
            Console.Write("现在在的上界是:")
            Console.WriteLine(Words.GetUpperBound(0))

            For jCount = Words.GetLowerBound(0) To Words.GetUpperBound(0)
                Words(jCount) = jCount.ToString
                Console.WriteLine("下标:" & Words(jCount))
            Next

            Console.WriteLine("数组的维数" & Words.Rank)
            Console.WriteLine("数组元素个数:" & Words.GetLength(0))
            Console.ReadLine()
        End Sub

    End Module
     

    展开全文
  • 关于动态数组的存储方式

    千次阅读 2010-05-15 01:37:00
    VB.Net可以使用动态数组动态数组和普通的固定数组一样,在内存是连续的。当使用ReDim语句重新定义数组的大小时,ReDim语句会释放现有数组并且创建具有相同秩的新数组,最后根据该数组的类型为其设置默认值。...

    在VB.Net中可以使用动态数组,动态数组和普通的固定数组一样,在内存中是连续的。

    当使用ReDim语句重新定义数组的大小时,ReDim语句会释放现有数组并且创建具有相同秩的新数组,最后根据该数组的类型为其设置默认值。

    在使用ReDim语句的同时,加上Preserve关键字的情况下,重新创建的数组会保留重新创建之前的数组中的值。

     

    例:

     

    Dim arr1() As Integer

    ReDim arr1(0)

    For i As Integer = 1 To 10

        ReDim Preserve arr1(i)

        arr1(i) = i

    Next i

     

    MSDN上的解释:

    数组替换。ReDim 释放现有数组并且创建具有相同秩的新数组。新数组将替换数组变量中已释放的数组。
    不使用 Preserve 初始化。如果未指定 Preserve,ReDim 会将新数组的元素初始化为它们数据类型的默认值。
    使用 Preserve 初始化。如果指定 Preserve 修饰符,Visual Basic 会将这些元素从现有数组复制到新数组。

    http://msdn.microsoft.com/zh-cn/library/w8k3cys2(v=VS.80).aspx

    展开全文
  • VB数组的清除

    2019-09-27 12:22:31
    但有时可能需要清除数组的内容或对数组重新定义,这可以用:Erase语句来实现。 格式:Erase(数组名)[,(数组名)] 功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。 例如: Dim T(10)As ...

    在一个程序中,同一数组只能用Dim语句定义一次。但有时可能需要清除数组的内容或对数组重新定义,这可以用:Erase语句来实现。
      格式:Erase(数组名)[,(数组名)]
      功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。
      例如:
      Dim T(10)As Integer
      Erase T
      examda说明:
      (1)在Erase语句中,只需给出数组名,不带括号和下标。
      (2)在Erase语句用于静态数组时,如果这个数组是数值数组,则把数组中的所有数组元素置为0;如果是字符串数组,则把所有数组元素置为空字符串。
      (3)当把Erase语句用于动态数组时,将删除整个数组结构并释放该数组所占用的内存区。也就是说,动态数组经Erase语句执行后,即不复存在;而静态数组经Erase后,仍然存在,只是其内容被清空。
      (4)Erase语句释放动态数组所使用的内存,在下一次引用该动态数组之前,必须用ReDim语句,重新定义该数组。

    转载于:https://www.cnblogs.com/rosesmall/p/4871809.html

    展开全文
  • 以下有关数组的说明错误的是_29_ (A)根据数组说明的方式可将数组分为动态数组和静态数组 (B)在过程不能用Private语句定义数组 (C)利用ReDim语句重新定维时不得改变已经定义说明过的数组的数据类型 (D
  • VB中Dim和Redim的区别

    千次阅读 2018-11-10 14:05:20
    redim:重新定义动态数组的维数,必须先用dim定义一个动态数组: dim arr(),然后可重新定义:redim arr(2,100)、redim arr(1000)。 在redim使用过程,如果要保留数组的数据,需要使用Preserve关键字,如果不加...
  • VB中dim与redim的区别?

    千次阅读 2018-11-02 08:23:22
    redim:重新定义动态数组的维数,必须先用dim定义一个动态数组: dim arr(),然后可重新定义:redim arr(2,100)、redim arr(1000)。 在redim使用过程,如果要保留数组的数据,需要使用Preserve关键字,如果不加...
  • VB可变数组定义

    2010-07-29 10:58:00
    关键点:Dim str() As string '定义redim str(n) '重设长度 or redim Preserve str(n) '重设长度,并保持原来记录不变...详细阐述:ReDim 语句 在过程级别使用,用于为动态数组变量重新分配存储空间。 语法 ReDi...
  • 在C语言系列(我做.net时用的是C#,也许VB有别的办法吧)数组的长度必须在初始化的时候决定,但是有时做不到,那么只能在程序运行时来动态改变 了,我是用了一个临时数组来记录原来的数组,在将原来的数组...
  • VB读取EXCEL 编辑,

    2011-06-23 12:19:38
    ReDim TextBoxA(1 To i, 1 To j) '重新定义动态数组! Set TextBoxA(i, j) = a With TextBoxA(i, j) '设置文本框属性 .Text = Data(i, j) .Visible = True .Height = 200 .Width = 500 .Top = .Height * (i ...
  • VB程序设计及应用

    2012-11-26 14:07:12
    5.4.5 数组的清除和重新定义 5.4.6 数组的基本操作 5.4.7 数组应用举例 5.5 控件数组 5.5.1 控件数组的概念 5.5.2 控件数组的建立 习题二 5.6 过程 5.6.1 过程的定义 5.6.2 过程的调用 5.6.3 退出...
  • vb Script参考文档

    2009-07-28 22:13:02
    Erase 语句 重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象 含有关于运行时错误的信息。 Eval 函数 计算并返回表达式的值。 Execute 方法 根据指定的字符串,执行正则表达式的搜索。 Execute...
  • 在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗? 9、函数过程和子过程的区别是什么? 10、子过程调用有哪两种形式? 11、什么是形参?什么是实参?什么是值引用?什么地址引用?地址引用时,对应的...
  • vb贪食蛇源代码

    2012-04-21 16:52:54
    vb小游戏定义蛇的运动速度枚举值 Private Enum tpsSpeed QUICKLY = 0 SLOWLY = 1 End Enum '定义蛇的运动方向枚举值 Private Enum tpsDirection D_UP = 38 D_DOWN = 40 D_LEFT = 37 D_RIGHT = 39 End Enum '...
  • * 在文件(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会...
  • * 在文件(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会...
  • * 在文件(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会...
  • 4.4.2 保留动态数组的内容 75 4.5 数组的基本操作 76 4.5.1 数组的引用 76 4.5.2 数组元素的输入 76 4.5.3 数组元素的输出 77 4.5.4 数组元素的复制 78 4.6 数组元素的特殊操作 79 4.6.1 使用Erase语句对数...
  • Excel_VBA教程

    2014-09-22 11:36:34
    7.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 利用VBA操纵文件和...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    7.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 利用VBA操纵文件和...
  • 7.4.3 在类定义中指定默认的形参值 318 7.4.4 在构造函数使用初始化列表 320 7.5 类的私有成员 320 7.5.1 访问私有类成员 323 7.5.2 类的友元函数 324 7.5.3 默认复制构造函数 326 7.6 this指针 328...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java非对称加密源程序代码实例,本例使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 ...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类...
  • 第一部分 重新思考Web应用 第1章 一种新的Web设计方法 1.1 为什么需要Ajax富客户端? 1.1.1 比较用户体验 1.1.2 网络延迟 1.1.3 异步交互 1.1.4 独占或瞬态的使用模式 1.1.5 忘掉Web 1.2 Aiax的四个基本原则 1.2.1 ...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

vb中动态数组重新定义