VB6 用數組作函數參數並返回一個數組的實例

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

本文轉自
http://www.cnblogs.com/wanglonghao/archive/2007/11/15/958465.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章