导读:

  这是我在博客园的处女作,写的肯定不好,高手别见笑。有错误的地方,欢迎批评指正,谢谢大家支持!

  有时候需要对数组进行操作,这就要求函数能够用数组作为参数,并能返回一个数组。比如说要编写一个函数,用于计算两个矩阵的乘法,这两个参数必须是两个二维数组,并且返回值也要是一个二维数组,本文就以计算矩阵乘法为例,写了一个函数,大家一起讨论讨论。

  代码如下:

  ’计算两个矩阵乘法

  ’矩阵为整型

  


  

  


  

  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


版权声明:本文为cxc3214原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cxc3214/article/details/2071701