动态数组怎么定义?
动态数组
动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的下标;当要用它时,可随时用ReDim语句重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。
要创建动态 数组,请按照以下步骤执行:
(如果希望 数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给 数组附以一个空维数表,这样就将数组声明为动态数组。
延伸阅读
VBA里应该怎么定义一个动态的二维数组?
VBA中动态定义一个二维数组,案例代码如下://定义动态数组ttSub tt()Dim a() As IntegerReDim a(1 To 2, 1 To 1) As Integera(1, 1) = 10i = 10ReDim Preserve a(1 To 2, 1 To i) As IntegerMsgBox a(1, 1)End Sub
vb中动态数组用redim重定义时到底可不可以?
‘当然可以了,举个VB6的例子:
Option Explicit
Private Sub Form_Load()
Dim buf() As Byte
ReDim buf(1) ‘redim用于 为动态数组变量 重新分配存储空间。
buf(0) = “1”
buf(1) = “2”
ReDim Preserve buf(2) ‘Preserve参数用来保留数组中原有的数据
buf(2) = “3”
MsgBox buf(0) & ” ” & buf(1) & ” ” & buf(2) ‘显示数据中的数据
End Sub
动态数组的数据格式?
C语言的动态数组可以用malloc()函数实现,格式为: int *p = (int *)malloc(sizeof(int)*k), 分配k个元素的动态数组
动态数组与链式存储的区别?
数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。
链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。
(1) 从逻辑结构角度来看
a,数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
b,链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
(2)从内存存储角度来看
a,(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
b, 链表从堆中分配空间, 自由度大但申请管理比较麻烦.
VB中定义二维动态数组的方法?
ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。
对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。ReDim DynArray (4 to 12) 例如,用第一次声明在模块级所建立的动态数组 Matrix1: Dim Matrix1 () As Integer 然后,在过程中给数组分配空间: Sub CalcValuesNow () . . . ReDim Matrix1 (19, 29) End Sub 这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。
动态数组是动态存储模式吗?
在VB.Net中可以使用动态数组,动态数组和普通的固定数组一样,在内存中是连续的。
当使用ReDim语句重新定义数组的大小时,ReDim语句会释放现有数组并且创建具有相同秩的新数组,最后根据该数组的类型为其设置默认值。
在使用ReDim语句的同时,加上Preserve关键字的情况下,重新创建的数组会保留重新创建之前的数组中的值
静态数组和动态数组的区别是什么?考试中,求大侠帮忙?
静态数组是在定义是就已经在栈上分配了空间大小,在运行时这个大小不能改变,如:
int a[10];
动态数组的大小是在运行是给定,即,运行时在堆上分配一定的存储空间,同时运行时还可以改变其大小,如:
int *a;
a = new int[10];
vb动态数组定义?
举例:Dim d() As Integer ‘一开始声明的数组规模为0 可以分别用带有关键字Preserve或不带关键字Preserve的语句,重新声明数组,以改变规模:例1:ReDim d(1 + 2) A
如何定义一个动态的数组?
如果使用的是C语言的话,用malloc函数,定义动态数组。例如:int*a=(int*)malloc(sizeof(int)*10);//分配10个int类型的数组,同inta[10]普通数组分配在栈(stack)里面,由变压器统一分配和回收.动态数组则定义在堆(heap)里面,分配后要调用用free函数释放内存,以免造成内存泄漏.其它编程语言都可以查找相应的分配/释放函数,但其本质都是分配在堆里面.