怎样用数组传递参数???
比如编写一个子函数,功能是把输入的数组的所有元素全部乘以2后再输出,由于我不会用数组传递参数,所以我现在只能这样实现:
定义一个公共的数组,比如新建一个模块后,在此模块中定义:
Global PubArray()
然后,编写一个公共的数组处理函数
Public Sub DealArray(ArrayLength)
dim i
for i=0 to ArrayLength-1
PubArray(i)=PubArray(i)*2
next
End Sub 然后,在要处理一个数组时,比如在一个按钮控件的Click事件中要处理一个叫ArrayToBeDeal() Private Sub Command1_Click()
Dim i
Dim ArrayToBeDeal(3)
'对数组赋值
for i=0 to 2
ArrayToBeDeal(i)=4
next '开始调用公共函数,来对此数组的所有元素扩大两倍
redim PubArray(3)
for i=0 to 2
PubArray(i)=ArrayToBeDeal(i)
next
DealArray(3)'很愚蠢的办法,希望得到指正 '往后,ArrayToBeDeal()中的内容均扩大了两倍,可以往下执行了
End Sub 这样的方法的确愚蠢,我希望能在公用函数DealArray中定义一个数组参数,类似C语言中的形式参数,只在
公用函数DealArray中能有效,出了此函数即消亡,并且公用函数DealArray能直接返回数组,类似C语言中
的返回一个数组指针,这样我就可以对出来的数组直接使用了,省去了定义公共数组,以及用循环语句先要对
公共数组赋值的麻烦!
望得到大家的帮助,谢谢!
比如编写一个子函数,功能是把输入的数组的所有元素全部乘以2后再输出,由于我不会用数组传递参数,所以我现在只能这样实现:
定义一个公共的数组,比如新建一个模块后,在此模块中定义:
Global PubArray()
然后,编写一个公共的数组处理函数
Public Sub DealArray(ArrayLength)
dim i
for i=0 to ArrayLength-1
PubArray(i)=PubArray(i)*2
next
End Sub 然后,在要处理一个数组时,比如在一个按钮控件的Click事件中要处理一个叫ArrayToBeDeal() Private Sub Command1_Click()
Dim i
Dim ArrayToBeDeal(3)
'对数组赋值
for i=0 to 2
ArrayToBeDeal(i)=4
next '开始调用公共函数,来对此数组的所有元素扩大两倍
redim PubArray(3)
for i=0 to 2
PubArray(i)=ArrayToBeDeal(i)
next
DealArray(3)'很愚蠢的办法,希望得到指正 '往后,ArrayToBeDeal()中的内容均扩大了两倍,可以往下执行了
End Sub 这样的方法的确愚蠢,我希望能在公用函数DealArray中定义一个数组参数,类似C语言中的形式参数,只在
公用函数DealArray中能有效,出了此函数即消亡,并且公用函数DealArray能直接返回数组,类似C语言中
的返回一个数组指针,这样我就可以对出来的数组直接使用了,省去了定义公共数组,以及用循环语句先要对
公共数组赋值的麻烦!
望得到大家的帮助,谢谢!
dim i as integer
dim j as integer
Dim a() as integer
j=-1
for i=1 to 10
j=j+1
redim preserve a(j)
a(j)=i
next i
call fun(a)
end sub
Public Function fun(a() As Integer)
Dim i As Integer
Dim j As Integer
j = UBound(a)
For i = 0 To j
a(i) = a(i) * 2
Next i
End Function
Public Sub DealArray(SrcArray() As Long)
Dim i As Long
For i = LBound(SrcArray) To UBound(SrcArray)
SrcArray(i) = SrcArray(i) * 2
Next
End SubPrivate Sub Command1_Click()
Dim i As Long
Dim ArrayToBeDeal(3) As Long
'对数组赋值
For i = 0 To 3
ArrayToBeDeal(i) = 4
Next '开始调用公共函数,来对此数组的所有元素扩大两倍
DealArray ArrayToBeDeal '往后,ArrayToBeDeal()中的内容均扩大了两倍,可以往下执行了
End Sub
按照homezj(小吉)的方法,的确在调用了子函数后可以改变ArrayToBeDeal()中的内容。但是,如果希望调用了子函数后依据ArrayToBeDeal()的内容去改变OtherArrayToBeDeal()的内容,又应该怎样处理呢?就是类似把OtherArrayToBeDeal()作为子函数的返回值来处理一样???
望得到大家的帮助,上面的问题已经结了帖,分不够可以加分!