二维数组和指针作为实参的函数为什么会提示实参和形参不一致
/*声明一个3*5的数组,输出数组,然后数组的值翻一倍,再输出翻倍后的数组*/#include <stdio.h>
#define COLS 3;
void show(int b[][5], int n);
void twice(int (*q)[5], int m);
int main (void)
{
int a[COLS][5] = { {2, 4, 3, 5, 8},
{8, 6, 5, 4, 1},
{4, 8, 6, 2, 5} };
int (* p)[5] = a;
printf("翻倍前:\n");
show(a, COLS);
twice(p, COLS);
return 0;
}
void show(int b[][5], int n)
{
int i,j;
for(i = 0; i < n; i++)
{
for(j = 0; j < 5; j++)
printf("%d ", b[i][j]);
printf("\n");
}
printf("\n");
}
void twice(int (*q)[5], int m)
{
int k,l;
printf("翻倍后:\n");
for(k = 0; k < COLS; k++)
{
for(l = 0; l < m; l++)
{
*(*(q+k)+l) *= 2;
printf("%d ", *(*(q+k)+l));
}
printf("\n");
}
printf("\n");
}