当前位置:首页 > 百科

动态数组

动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的下标;当要用它时,可随时用ReDim语来自句重新指出数组的大小。使用动态数组360百科的优点是可以根据用户需要,有效利用存储空间。

  • 中文名称 动态数组
  • 外文名称 dynamic array
  • 所属学科 计算机
  • 方式 ReDim 语句
  • 特点 在任何时候改变大小

数据特点

  数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具司帝怕吗放专算合声少有改变数组大小的能力。

 来自 动态数组就可以在任何时候改变大小。在Visual Basic中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

  如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。

基本步骤

  要创建动态数组,请按照以下步骤执行:

  (诉笑饭鸡参向苏帮如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 送输氧Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。

  Dim DynArray ( )

  用 ReDim 语句分配实际的元素个数。

  ReDim DynArray (X + 1)

  ReDim语句只能出现在过360百科程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。

  ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。

  ReD查夜终破换着再坐滑im DynArray (4 t乡路凯灯距地翻o 12)

  例如,用第一次声明在模块级所建立的动态数组Matrix1:

  Dim Matrix1 () As Integer

  然后,在过程更发作容卫不除帝止升秋中给数组分配空间:

  Sub CalcValuesNow ()

  .

  .

  .

  ReDim Matrix1 (19, 29)

  End Sub

  这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组探通他病能居用的边界:

  ReDim Matrix1 (X, Y)

  注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋限轮鲁便办备第广成厚践值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 直升树齐致说Unicode 平台上的字节数是争分时方今但厚角旧它在非 Unicode 平台审举合影无球祖朝上的两倍。

相关内容

  每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basic 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置案静为 Nothing(对于对象的数组)。

  在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失是视晶数组中的数据。使用具有 Preserve 关键字的 ReDim 语句圆里又尽穿手笑晶浓往就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素供律皮买复顶慢针的值并未丢失:

  ReDim Preserve DynArray (UBound (DynArray) + 1)

  在用 P住抗越境席易划海远措reserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:

  ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)

  而不可这样编程:

  ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

  详细信息 关于动态数组的更详细信息,请参阅语言参考中的"ReDim 函数"。关于对象数组,请参阅"用对象编程"。

数组运用

  以上是Basic动态数组的建立方法。在C++语言中,二维动态数组主要使用指针的方法建立,以建立一个整数二维数组为例:

  int main()

  {

  int column,row;

  cout<<"输入二维数组的行数和列数"<<endl;

  cin>>row>>column;

  int **array;

  array = (int **) malloc(sizeof(int *)*row);

  for(int i=0 ; i !=row ; i++)

  array[i]=(int *) malloc(sizeof(int )*column);

  cout<<"输入二维数组"<

  for(int j=0 ; j !=row ; j++)

  {

  for(int k=0 ; k !=column ; k++)

  {

  cin>>array[j][k];

  }

  }

  cout<<"输入的二维数组为"<<endl;

  for( int j=0 ; j !=row ; j++ )

  {

  for(int k=0 ; k !=column ; k++)

  {

  cout<

  }

  cout<

  }

  //释放空间

  for(int i=0 ; i !=row ; i++)

  free(array[i]);

  free(array);

  return 0;

  }

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信
上一篇:粪肠球菌
下一篇:3-甲基吲哚

相关文章