所以在我的程序中,我有一个函数将一个二维数组传递给它,我想设置另一个二维数组等于那个二维数组。我正在用 C++ 编写代码,但语法不太正确。现在我有以下内容:
void MyFunction(float **two_d_array){
float newArray[4][4];
//Set new array equal to two_d_array
}
two_d_array 也将始终为 4x4,因此尺寸本身不是问题。
所以在我的程序中,我有一个函数将一个二维数组传递给它,我想设置另一个二维数组等于那个二维数组。我正在用 C++ 编写代码,但语法不太正确。现在我有以下内容:
void MyFunction(float **two_d_array){
float newArray[4][4];
//Set new array equal to two_d_array
}
two_d_array 也将始终为 4x4,因此尺寸本身不是问题。
我希望您不要将二维数组作为双指针传递给您的函数。
无论如何,你可以写
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));
}
当您将二维数组定义为
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];
}
}
}
是的,您必须分配第二个维度,并且通过一个整数参数传递第一个维度,它看起来像这样: void foo(float arr[][4], int dim);