#include <stdio.h>
#include <stdlib.h>
/*
*
*int a[M][N]={...};
*int *p = *a ;
*int (*q)[N]= a ;
*
*值 a[i][j] *(a+i)+j a[i]+j p[i] *p q[i][j] *q q p+3 q+2
*形参 int int * int * int int int int * int (*)[N] int * int (*)[N]
*
*
*/
#define M 2
#define N 4
/*将一个二位数组看作成一个大数组操作,not good */
void print_arry(int *p , int num)
{
int i ;
for(i = 0 ; i < num ; i++)
{
printf("%d ",p[i]);
}
printf("\n");
}
/*对二维数组进行处理*/
/*void print_arry1(int p[][N] , int m , int n)*/
void print_arry1(int (*p)[N] , int m , int n)
{
int i , j ;
for(i = 0 ; i < m ; i++)
{
for(j = 0 ; j < n ; j++)
{
printf("%d ",*(*(p+i)+j));
}
printf("\n");
}
printf("\n");
}
int main(void)
{
int i ;
int a[M][N] = {1,2,3,4,5,6,7,8};
print_arry(&a[0][0],M*N);//&a[0][0] 可以换做a[0]、*a、*(a+0)
print_arry1(a,M,N);//
exit (0);
}