我想这样做,但行不通。是否可以这样做,或者我是否必须将 A 声明为双指针浮点**?请注意,我需要一个适用于各种数组维度的通用函数,因此我无法更改函数参数。
void func(float** arr, int x, int y){
//access to arr[0][0] for e.g. causes SEGFAULT
}
...
float A[2][2]={{1,0},{0,1}};
func(A, 2, 2);
最佳答案
要将二维数组传递给函数,您需要在编译时至少知道二维中的元素数。
void func(float arr[][2], int n)
如果您在编译时不知道数组的大小,您无能为力,除了:
void func(float *arr, int n, int m)
{
// getting arr[i][j] with arr[i*m + j]
}
float A[2][2]={{1,0},{0,1}};
func(&A[0][0], 2, 2);
关于c - 传递一个 "normal"二维数组作为 **,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878741/