动态数组取数

xiangdafang 2006-01-22 12:16:40
dim ss()as double
dim i as integer
for i =1 to 10
redim ss(i)
ss(i)=i

nexti
dim bb as integer
bb=ubound(ss)-lbound(ss)

找出ss(bb/2)的值
应该是ss(bb/2)=5
可是地显示ss(bb/2)=0
...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2006-01-22
  • 打赏
  • 举报
回复
保留动态数组的内容
每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

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

ReDim Preserve DynArray (UBound (DynArray) + 1)

在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:

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

而不可这样编程:

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

详细信息 关于动态数组的更详细信息,请参阅语言参考中的“ReDim 函数”。关于对象数组,请参阅“用对象编程”。
完美人生2013 2006-01-22
  • 打赏
  • 举报
回复
直接Redim会清除数组的所有数据,如果要扩大数组,并且保留之前数据,请使用

Redim Preserve ss(0 to i) as double
ss(i)=1512
Summer006 2006-01-22
  • 打赏
  • 举报
回复
redim ss(i)
每次运行这个会清除以前的所有数据.
所以你那个for循环完后,只有ss(10)有值. 其他都是0

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧