VB 数组定义

加入我使用如下语句定义一个数组Dimx()asdouble这时,VB认为这个数组又多大呢?为什么我给x(0)赋值会提示下标越界呢?谢谢回答也就是说我要用两个语句才可以,先... 加入我使用如下语句定义一个数组

Dim x() as double

这时,VB认为这个数组又多大呢?
为什么我给 x(0) 赋值 会提示下标越界呢?
谢谢回答 也就是说 我要用两个语句才可以,

先定义数组, 再指定大小。

可不可以用一句来实现呢?

就象是在 VC里面可以用一句就行了:例如:int a[10];
展开
 我来答
katar1024
2008-09-07 · TA获得超过942个赞
知道小有建树答主
回答量:511
采纳率:0%
帮助的人:531万
展开全部
刚刚定义了Dim x() as double还没初始化,系统没有为数组的数据部分分配内存,是一个空的数组,此时它不占用内存,但是系统为了保存数组的结构,只占用24字节的大小,因为是空的数组(没有数据区),所以使用Lbound或者Ubound求它的上下界会出现错误
初始化数组使用redim x(下界 to 上界) as ,此时系统清空数组中原有的数据,然后重新分配内存
注意变量类型一定要和定义的一直
如果想扩大数组范围又保持原有的数据,需要加入preserve关键字
redim preserve x(下界 to 新上界) as
乐乐爱知道
2015-06-24 · TA获得超过938个赞
知道答主
回答量:335
采纳率:100%
帮助的人:103万
展开全部
'动态数组的一个例子。
Private Sub Command1_Click()
Dim a() As Integer'定义一个可变的数组
Dim n As Integer
n = 10
ReDim a(n) As Integer'重新定义大小
For i = LBound(a) To UBound(a)'用这两函数获得数据的上标和下标
a(i) = i + 1
Print i
Next
Print "-------------------"
ReDim Preserve a(n + 2) As Integer'加Preserve维持原始数据不变,如果没有这个关键词,所有元素都将变成0
a(n + 1) = 11
a(n + 2) = 12
For i = LBound(a) To UBound(a)
a(i) = i + 1
Print i
Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjxwm7
2008-09-07 · 超过14用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
你少用了个redim
Dim x() As Double
ReDim x(5) As Double'你少了这个
x(0) = 5
Print x(0)
redim用来重新定义数组,按定义的上下界重新划分存储单元,并可为定义的变量改变存储类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
moxsone
2008-09-07 · TA获得超过3333个赞
知道大有可为答主
回答量:2796
采纳率:50%
帮助的人:1504万
展开全部
定义了Dim x() as double 还不能使用,
必须指定x的大小才能用
如:
redim x(0 to 10) as double或者
redim preserve x(0 to 10) as double才能使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忆年华
2008-09-07 · TA获得超过489个赞
知道小有建树答主
回答量:205
采纳率:40%
帮助的人:104万
展开全部
Dim x() as double

这样声明为一个没有界定上下标的数组.

Dim x(9) as double
定义上标的数组
x(0)...x(1)...x(2)...x(9)

Redim x(5) as double
为重定义数组大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式