按键精灵什么是动态数组?如何使用动态数组?(新手进阶)

前言

如果你没有编程基础,对数组还没什么了解,建议不要学习本帖知识,先学习了解数组的基本知识。对数组有基本了解往下看,
直入主题,什么是动态数组?怎么用?概念上的东西不多说了,看例子!

正文

// 什么是动态数组?什么时候用?有什么用看例子:
//
// 定义数组:Dim 数组名(下标),数组长度已被锁定!

Dim GG(3) //定义一个数组GG,下标为3,数组元素数为4(公式:数组下标+1=数组中元素个数)
GG(0)=8
GG(1)=3
GG(2)=4
GG(3)=6

// 上面是数组的定义与赋值,GG(4)是不存在的,下标最大值是3,不可能有GG(4),如果代码使用GG(4)那就叫下标越界!
//【假设】如果我想给这个数组下标扩大!GG(4)=1,GG(5)=0,如何加进去?
//【错解】直接添加GG(4)=1,GG(5)=0
//【正解】不可以直接添加!因原数组长度已被锁定。动态数组就用在此时!

Dim 新数组() '定义新数组,长度未锁定所以括号里不写下标值,本行可省略
For 计数 = 0 To UBound(GG)
ReDim Preserve 新数组(计数)
TracePrint UBound(新数组) '返回新数组长度
新数组(计数)=GG(计数)
Next
ReDim Preserve 新数组(5) //循环结束,新数组长度为3,而我们要将其变成5,该行不可省!
新数组(4) = 1
新数组(5) = 0 //是不是搞定了呢?测试一下是否成功了?!激动ing

//0ReDim Preserve 新数组(100) //删除本行首的“//0”再执行会发现数组长度再次被改变,不会报错
MessageBox Join(新数组, “|”) '弹出结果,方便我们分析
//
// 综上所述,已被定义的数组,已确定其下标则长度会被锁定,不可以再改变其长度,不能添加新元素。如需要扩大下标添加新元素的情况须使用动态数组!
// 动态数组的声明方式为: ReDim 数组名(新下标),如果需要保留原数组元素,那么需要添加Preserve,写法即:ReDim Preserve 数组名(新下标)

引申
上文只对一维数组动态数组的使用做了介绍,多维的情况不多做讨论,感觉用的不多,印象里多维的规则是只可以改变最后一维的下标!!有兴趣的自己找资料看看

实例

课题:现用户要求按一次键存入一次按键码,每次记录按键码最后以换行排列?
说明:动态数组用在类似的课题中,非常方便!用户按键次数是未知的(即数组长度未知)
实现:

下标=0 '给数组下标赋初值
Do
相识 = WaitKey() '存入按键码
ReDim Preserve 数组(下标) '动态数组,改变数组长度或说改变下标
数组(下标) = 相识
下标=下标+1 '下标自增
Loop
Sub OnScriptExit()
MessageBox Join(数组, vbcrlf)
End Sub
要在按键精灵中返回数组,可以将需要返回的值放在一个数组中,并将该数组作为返回值。以下是一个示例: ``` Function fun_a(i) Dim a(2) a(0) = i * 10 a(1) = i * 100 fun_a = a End Function ``` 在这个例子中,我们定义了一个名为fun_a的函数,它接受一个参数i。在函数内部,我们创建了一个大小为2的数组a,并将计算结果存储在数组的不同位置上。最后,我们将数组a作为函数fun_a的返回值。 要调用这个函数并获取返回的数组值,可以使用以下代码: ``` arr = fun_a(10) ``` 在这个例子中,我们调用了fun_a函数并将参数设置为10。返回的数组被赋值给名为arr的变量。你可以通过arr(0)和arr(1)分别访问数组中的不同元素。例如,要弹出第一个元素的值,可以使用以下代码: ``` MsgBox "X坐标: " & arr(0) ``` 这将弹出一个消息框,显示X坐标的值为数组中的第一个元素。 通过这种方式,你可以在按键精灵中返回数组,并对返回的数组进行进一步的操作和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [按键精灵Q语言-怎么使用自定义函数返回值](https://blog.csdn.net/goldDaNiu/article/details/81666481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值