所以在我的程序中我有一个函数,它传递给它一个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,因此尺寸本身不是问题。
答案 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);