VB6 用數組作函數參數並返回一個數組的實例
導讀:
這是我在博客園的處女作,寫的肯定不好,高手別見笑。有錯誤的地方,歡迎批評指正,謝謝大家支持!
有時候需要對數組進行操作,這就要求函數能夠用數組作爲參數,並能返回一個數組。比如說要編寫一個函數,用於計算兩個矩陣的乘法,這兩個參數必須是兩個二維數組,並且返回值也要是一個二維數組,本文就以計算矩陣乘法爲例,寫了一個函數,大家一起討論討論。
代碼如下:
'計算兩個矩陣乘法
'矩陣爲整型
Public Function iMUL()Function iMUL(a() As Integer, b() As Integer) As Variant
Dim i, j, k As Integer
If UBound(a, 2) <> UBound(b, 1) Then
MsgBox "參數錯誤,請輸入兩個可以相乘的矩陣!"
End
End If
Dim c() As Integer
ReDim c(UBound(a, 1), UBound(b, 2))
For i = 0 To UBound(a, 1)
For k = 0 To UBound(b, 2)
c(i, k) = 0
For j = 0 To UBound(a, 2)
c(i, k) = c(i, k) + a(i, j) * b(j, k)
Next j
Next k
Next i
iMUL = c
End Function
算法就不必說了,學過線代的都看得懂。
因爲我是菜鳥,所以寫點我在寫這個函數的時候碰到的一些小問題,希望能對廣大菜鳥們有一些幫助:
由於返回的是一個數組,所以函數必須申明爲變體類型是(variant),當然,不指明也可.
函數的參數是數組,必須是引用參數,可以在前面加上byref,不加VB也能認出這是數組,會默認爲byref.
數組C用於保存返回的數組,必須申明爲動態數組,也必須Redim它的大小,如果直接申明它的大小會報錯,大家試試看就 知道了。
好了,今天就寫到這裏了,下次再發一個求逆陣的算法,也是矩陣作參數,不過重點是算法。
感謝 blueskit 的指點,將函數聲明爲Integer()是可以的.也建議大家這樣做。我之所以會用Vriant是因爲我沒有想到在類型後加上括號可以表示一個數組類型。
本文轉自
http://www.cnblogs.com/wanglonghao/archive/2007/11/15/958465.html
這是我在博客園的處女作,寫的肯定不好,高手別見笑。有錯誤的地方,歡迎批評指正,謝謝大家支持!
有時候需要對數組進行操作,這就要求函數能夠用數組作爲參數,並能返回一個數組。比如說要編寫一個函數,用於計算兩個矩陣的乘法,這兩個參數必須是兩個二維數組,並且返回值也要是一個二維數組,本文就以計算矩陣乘法爲例,寫了一個函數,大家一起討論討論。
代碼如下:
'計算兩個矩陣乘法
'矩陣爲整型
Public Function iMUL()Function iMUL(a() As Integer, b() As Integer) As Variant
Dim i, j, k As Integer
If UBound(a, 2) <> UBound(b, 1) Then
MsgBox "參數錯誤,請輸入兩個可以相乘的矩陣!"
End
End If
Dim c() As Integer
ReDim c(UBound(a, 1), UBound(b, 2))
For i = 0 To UBound(a, 1)
For k = 0 To UBound(b, 2)
c(i, k) = 0
For j = 0 To UBound(a, 2)
c(i, k) = c(i, k) + a(i, j) * b(j, k)
Next j
Next k
Next i
iMUL = c
End Function
算法就不必說了,學過線代的都看得懂。
因爲我是菜鳥,所以寫點我在寫這個函數的時候碰到的一些小問題,希望能對廣大菜鳥們有一些幫助:
由於返回的是一個數組,所以函數必須申明爲變體類型是(variant),當然,不指明也可.
函數的參數是數組,必須是引用參數,可以在前面加上byref,不加VB也能認出這是數組,會默認爲byref.
數組C用於保存返回的數組,必須申明爲動態數組,也必須Redim它的大小,如果直接申明它的大小會報錯,大家試試看就 知道了。
好了,今天就寫到這裏了,下次再發一個求逆陣的算法,也是矩陣作參數,不過重點是算法。
感謝 blueskit 的指點,將函數聲明爲Integer()是可以的.也建議大家這樣做。我之所以會用Vriant是因爲我沒有想到在類型後加上括號可以表示一個數組類型。
本文轉自
http://www.cnblogs.com/wanglonghao/archive/2007/11/15/958465.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.