假设我有一个二维数组的声明:
int array[4][2] = { { 0, 2 }, { 1, 8 }, { 2, 4 }, { 3, -10 } };
我有一个将二维数组作为参数的函数:
void sort( int **, int );
...
void sort( int **array, int arraylength ){
...
}
我通过值将数组传递给函数,如下所示:
sort( array, 4 );
我收到以下错误:
frequency.c:53:8: warning: passing argument 1 of 'sort' from incompatible pointer type [-Wincompatible-pointer-types]
sort( array, 4 );
^~~~~
该类型如何不兼容?我的理解是所有数组变量都被视为指针,所以我只是将一个int指针指针传递给一个函数,该函数将一个int指针指针作为参数,通过引用有效地传递数组中的数据。唯一的区别是函数原型对参数使用数组表示法,而数组的声明使用常规静态数组表示法。静态声明的数组与动态声明的数组有什么不同吗?