从不兼容的指针类型传递'x'的参数1

时间:2018-11-13 14:53:47

标签: c

我尝试创建一个无法获取二维数组的void函数,并且它们可以用于输入和输出。

此功能。

void Charge(float *p[15][10]){

呼叫是这样的:

Charge(&pol);

数组为Float pol [15] [10]

我在Linux上使用GCC编译器

Ty。

1 个答案:

答案 0 :(得分:0)

如果使用gcc,应该会收到如下警告:

  

从不兼容的指针类型传递'Charge'的参数1 |应该是float * (*)[10],但参数的类型为float (*)[15][10]

这意味着原型应该是void Charge(float (*p)[15][10])-指向float [15][10]的数组指针,而不是float*的2D数组,这不是您想要的。


但是实际上没有理由使用此数组指针语法。这样更清楚:

float arr[15][10];
...
Charge(arr);
...
void Charge (float arr[15][10]);

由于数组衰减,它确实将数组指针传递给该函数。现在,您可以在函数内部将其用作arr[i][j]而不是(*p)[i][j]


使用21世纪的C,您也可以这样做:

float arr[15][10];
...
Charge(15, 10, arr);
...
void Charge (size_t x, size_t y, float arr[x][y]);