请问怎么才能不用循环赋值的方法把一个二维数组的一列赋值给一个一维数组?

解决方案 »

  1.   

    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)Private Sub Command1_Click()
      Dim a(2, 2) As Integer
      Dim b(8) As Integer
      
      Dim i As Integer
      Dim j As Integer
      For i = 0 To 2
      For j = 0 To 2
        a(i, j) = i * 2 + j
      Next j, i
      
      MoveMemory b(0), a(0, 0), 9
        For i = 0 To 8
        Debug.Print b(i)
      Next i
      
    End Sub
      

  2.   

    结果不对呀,你说的那个我试了一下,结果不对:应该是024135246但是结果却是024130000我的问题是怎么才能不用循环赋值的方法把一个二维数组的一列赋值给一个一维数组?注意是一列,也就是特定的一列比如二维数组a(6,6),把其中的第四列赋值给b(7),而不是把a(6,6)赋值给b(49)呀?那么怎么才能实现呢?谢谢了!
      

  3.   

    MoveMemory b(0), a(0, 0), 9*2   ,整型为两个字节
      

  4.   

    Option Explicit
    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
    Private Sub Command1_Click()
      Dim a(6, 6) As Integer
      Dim b(6) As Integer
      
      Dim i As Integer
      Dim j As Integer
      For i = 0 To 6
      For j = 0 To 6
        a(i, j) = j
      Next j, i
      
      MoveMemory b(0), a(0,4), 7 * 2     '注意它是把第4行 全部传过去了,这给数组的存储顺序相关,你可以变通一下,可以取行的数据么。
        For i = 0 To 6
        Debug.Print b(i)
      Next i
      
    End Sub
      

  5.   

    谢谢拉,那我可不可以再问你一个问题呢?假如我有一副灰度图像,其灰度值为一个二位数组,那么怎么才能把这副图像的灰度值迅速的传递给一个二维数组呢?不要用循环采用getpixel的方式,这样有点慢。有没有向你上面介绍的movememory的函数用呢?
      

  6.   

    参考:
    http://expert.csdn.net/Expert/topic/1769/1769380.xml?temp=.8412744
      

  7.   

    只要它是标准的格式,即它在内存中存放的顺序有规律,应该
    可以用movememory,这时估计要去掉文件头数据