c语言的编译器还真是不好理解...

代码
#include <stdio.h>
#define Lenth_array_1 8
#define Lenth_array_2 10
/*
    功能描述
    int (*parr)[length],parr指的是返回一个长度为length的指向int类型的指针
    可以这么理解,parr返回的一个一维数组的首地址。
    所以parr[i][j]就可以访问任何元素了。
    所以 用这个子函数就完成任何长度,任何二维数组的传递
*/
void myarray(int (*parr)[Lenth_array_2])//这里不能写出int myarray(int parr[Lenth_array_1][Lenth_array_1])
{
    
int i1,j2;//形成个好习惯,i1表示用来循环第一层,而j2表示用来循环第二层,以此类推
    for(i1=0; i1<Lenth_array_1; i1++)
    {
        
for(j2=0; j2<Lenth_array_2; j2++)
        {
            printf(
"%2d ",parr[i1][j2]);
        }
        printf(
"\n");//回车换行,一行一行的打印
    }
}

int main(void)
{
    
    
int i1,j2;    //形成个好习惯,i1表示用来循环第一层,而j2表示用来循环第二层,以此类推
    int array[Lenth_array_1][Lenth_array_2];
    
for(i1=0; i1<Lenth_array_1; i1++)
    {
        
for(j2=0; j2<Lenth_array_2; j2++)
        {
            array[i1][j2]
=i1*Lenth_array_2+j2;//array[0][0]=0, array[0][1]=1,/array[1][0]=1*Lenth_array_1+0=10, ....
        }
    }
    
    myarray(array);
//调用,只需要把二维数组的首地址,即变量名就可以完成调用
    
    
return 0;
}
原文地址:https://www.cnblogs.com/Knuth/p/1748732.html