http://blog.chinaunix.net/uid-25324849-id-336253.html
讨论的很深入。
char **pointer可以接受a[M][N]的赋值操作,但是不能作为形参接受实参的操作。
一下给出了两种实现二维数组的传递实现:
void Print1(char (*p)[20], int n)//n为二维数组中一维数组的个数
//void Print1(char p[][20], int n) 两种声明都行,{
int i;
for(i = 0; i < n; i++)
{
printf("array[%d]= %s\n", i,*(p+i));
}
}
采用一个指向字符串的指针实现:
Print2(char_array, 4, 20);
void Print2(char *p, int row, int col)
{
int i,j;
for(i = 0; i < row; i++)
{
j = 0;
while (p[i*col+j])
{
printf(" %c ", p[i*col+j]);
j++;
}
printf("\n");
}
}