使用矩阵作为1D数组参数

时间:2014-05-08 13:54:38

标签: c arrays multidimensional-array

我有一个2D数组,我需要一次处理一列。我写了一个示例代码来说明我想要做的事情。它显然不会编译。

float a[3][16]; // Create 2D array

void function1() // This function will be called from my application
{
    for (int i=0; i<16; i++) // For each column of the 2D array "a"
    {
        // Call this function that only take 1D array parameters
        function2(a[][i]); // What I want is all rows in column i
                           // MATLAB syntax is: function2(a(:,i));
    }
}

void function2(float b[])
{
    // Something
}

我知道我可以创建一个临时数组,将每列保存到其中并将其用作function2中的参数。我想知道是否有更好的方法或如何做到这一点?

1 个答案:

答案 0 :(得分:4)

最好的方法是将整个2d数组传递给function2()以及选择列的参数。然后沿着轴迭代。

for (int i=0; i<16; i++) // For each column of the 2D array "a"
{
    function2( a , i ); 
}

void function2(float b[Y][X] , size_t col )
{
    for( size_t i = 0 ; i < Y ; i++ )
        b[i][col] = ... 
}