我有一个function。 他的给入值是 一个 一维数组, 但是我现在所有的值都储存在一个二维数组里。 我怎么吧 比如说 二维数组里的第1个数组 给进去参与计算,然后第2第3个?我现在就是不知道怎么吧二维数组在 vb里分解成 一维数组。在 c语言里 可以定义一个 matrix(n,n), 然后通过 matrix(1) 获取第一行的数组。可是在vb里怎么实现呢?

解决方案 »

  1.   

    for i=0 to n
        matrix1(i)=matrix(1,n)
    next变量名不可以这么重复定义啊
    你换个名
      

  2.   

    上面写错了。呵呵
    是 在 c语言里 可以定义一个 matrix[n][m], 然后通过比如说 matrix[1] 获取第一行的数组。可是在vb里怎么实现呢?
    哪位高人指点一下吧。
      

  3.   

    难道只有用 for while 一个一个赋值然后通过tempArray 中转?哪个会是什么速度啊~~达人帮帮忙吧。感激不尽
      

  4.   

    算了。就用for while弄了。恶心是恶心,但也没办法。要 vba有 .net那样的帮助文档那该有多好啊~
      

  5.   

    非常简单,在VB也有一个非常快的方法可以让你得到这个结果:Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)Private Sub Form_Load()
    Dim I(5) As Long
    Dim L(1, 2) As LongDim K As Long
    Dim M As LongFor K = 0 To 1
       For M = 0 To 2
          L(K, M) = K * 10 + M
       Next
    Next
    CopyMemory I(0), L(0, 0), 24
    For M = 0 To 5
       Debug.Print "I(" & M & ")=" & Format(I(M), "00")
    Next
    End Sub二维数组L的内容一次性复制到一维数组I中了.
    从输出的结果中可以看出二维数组的实际存储顺序是总最左面的那一维开始的,而并非习惯上认为的从右面那一维开始.
    因此,楼主如果要用这个方法的话,要需要先把你那个二维数组的输入方式改成从左到右才行
      

  6.   

    谢谢楼上的。
    可能我没有清除的表达我的意思吧。
    我现在有个matrix,n行,m列。
    然后我又有个比如说计算平均值的函数 calculateMean(array1 as variable,array2 as variable), 现在我需要计算出matrix里每一行的数的平均值,我怎么把matrix里每一行当作一个一维数组(array)直接使用呢? 我本来想 直接提取,就像c#一样 calculateMean(matrix(1),matrix(2)),但是在vb里这样不行。现在我我弄了个for,同过两个临时数组tempArray来解决,真的是很恶心的方法。一想到我就睡不着。呵呵~For j = 1 To MatrixColumnCount
            TempArrayA(j) = MyMatrix(1, j)
        Next j
        
        For i = 2 To MatrixRowCount
            For j = 1 To MatrixColumnCount
                TempArrayB(j) = MyMatrix(i, j)
            Next j
        
            If Calc_AandB(TempArrayA, TempArrayB, A, B) Then
            End If
            
            ResultArray(i - 1, 1) = B
            ResultArray(i - 1, 2) = A
            ResultArray(i - 1, 3) = i
        Next i