二维数组与函数
#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); }