将一个2D阵列分配给另一个

时间:2013-06-01 06:09:08

标签: c++ arrays pointers multidimensional-array

所以在我的程序中我有一个函数,它传递给它一个2D数组,我想设置另一个2D数组等于那个2D数组。我用C ++编写代码并且无法正确地获得语法。现在我有以下内容:

void MyFunction(float **two_d_array){
    float newArray[4][4];
    //Set new array equal to two_d_array
}

two_d_array也将始终为4x4,因此尺寸本身不是问题。

3 个答案:

答案 0 :(得分:5)

我希望你不要将二维数组作为函数的双指针传递。

无论如何,你可以写

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        newArray[i][j] = two_d_array[i][j];

如果你有另一个二维数组(并且不是指针数组),那么只需使用memcpy()

void foo(float arr[][4])
{
    float newArray[4][4];
    memcpy(newArray, arr, sizeof(newArray));
}

答案 1 :(得分:1)

当您将二维数组定义为

float a[4][4]

它的类型是float [4] [4]。

如果你想将float **传递给函数你可以创建你的浮动**

float** f = (float**) malloc(sizeof(float *)*4);
    for(int i=0;i<4;i++){
      f[i] = (float*) malloc(sizeof(float)*4);
    }
//initialize
MyFunction(f);

和Myfunction类似

void MyFunction(float **two_d_array){
    float newArray[4][4];
    for(int i=0;i<4;i++){
        float* one_d = & two_d_array[i][0];
        for(int j=0;j<4;j++){
            newArray[i][j] = one_d[j];
        }   
    }

}

答案 2 :(得分:0)

是的,您必须指定第二个维度,并且第一个维度通过整数参数传递,它将如下所示: void foo(float arr [] [4],int dim);