我尝试创建一个 void 函数,它无法获取二维数组,但它们可以用于输入和输出。
这个函数。
void Charge(float *p[15][10]){
调用是这样的:
Charge(&pol);
数组为Float pol[15][10]
我在linux上使用GCC编译器
泰。
最佳答案
如果使用 gcc,您应该会收到如下警告:
passing argument 1 of 'Charge' from incompatible pointer type | expected
float * (*)[10]
but argument is of typefloat (*)[15][10]
这意味着原型(prototype)应该是void Charge(float (*p)[15][10])
- 指向float [15][10]的数组指针
code> 而不是 float*
的二维数组,这不是您想要的。
但是并没有真正的理由使用这个数组指针语法。这样做就更清楚了:
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]);
关于c - 从不兼容的指针类型传递参数 1 of 'x',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283705/