我尝试创建一个无法获取二维数组的void函数,并且它们可以用于输入和输出。
此功能。
void Charge(float *p[15][10]){
呼叫是这样的:
Charge(&pol);
数组为Float pol [15] [10]
我在Linux上使用GCC编译器
Ty。
答案 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]);