二维数组与指针的相关讨论

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");

    }

}



你可能感兴趣的:(二维数组与指针的相关讨论)