在我的程序中,我有一个函数,它传递了一个二维数组,并且我想将另一个二维数组设置为该二维数组。我正在用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));
}
typedef double d4x4[4][4]; void foo(d4x4& arr)
。这可以防止传入double [1] [4],从而挽救你的生命。 - Balog Palstd::vector<std::vector<float> >
。 - user529758当你定义一个二维数组为
float a[4][4]
它的类型是 float [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);