有没有办法将1D固定数组传递给2D指针函数。我可以弄清楚传递1D指针数组。
void prettyPrintMatrix_float(float **matrix, int rows, int cols){
int i, j;
for (i = 0; i<rows; i++){
for (j = 0; j<cols; j++){
printf("%10.3f", matrix[i][j]);
}
printf("\n");
}
return;
}
float myArray[10] = {0.0f};
float* myPointerArray = (float*)malloc(sizeof(float) * 10);
prettyPrintMatrix_float(&myPointerArray, 1, 10); // Works
prettyPrintMatrix_float(&myArray, 1, 10); // ERROR
prettyPrintMatrix_float(&(myArray[0]), 1 , 10); ERROR
所以我无法想办法解决这个问题。我能想到的唯一方法就是创造新的功能。我不愿意,如果我不愿意的话。
答案 0 :(得分:0)
您无法执行您要执行的操作,float**
不是float*
,也不具有相同的内存布局。
第一个是指向float
指针的指针,这意味着第一次取消引用会产生一个指针,而float*
会直接获得该值。
您可以使用float*
的地址来获取float**
,但这不是您想要做的事情(因为rows
将非常简单1)。以单一方式管理2D和1D数组的方法是始终使用float*
并使用特殊函数来获取两个维度的正确元素,例如:
float get(float* data, float x, float y, float w) {
return data[y*w + x];
}
所以一切都可以围绕float*
。