3

所以在我的程序中,我有一个函数将一个二维数组传递给它,我想设置另一个二维数组等于那个二维数组。我正在用 C++ 编写代码,但语法不太正确。现在我有以下内容:

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

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

4

3 回答 3

6

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

无论如何,你可以写

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));
}
于 2013-06-01T06:12:58.760 回答
1

当您将二维数组定义为

float a[4][4]

它的类型是浮点[4][4]。

如果您想将 float** 传递给函数,您可以使用 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];
        }   
    }

}
于 2013-06-01T09:08:09.310 回答
0

是的,您必须分配第二个维度,并且通过一个整数参数传递第一个维度,它看起来像这样: void foo(float arr[][4], int dim);

于 2013-06-01T07:02:34.100 回答