首先,二维数组是一维数组的一维数组
int a[3][5]定义了一个有3个元素的数组,每个元素是有5个int的数组
int a[3]和int b[5]定义了两个变量a和b,它们的数据类型分别是int[3]和int[5]
然后,数组是不能整体操作的,例外是在定义的时候可以整体初始化
因此,函数传参的时候传得是指针,因为数组的名字可以隐式转化为指向首元素的指针
void a( int b[3] )和void a( int b[5] )本质上和void a( int* b )是一样的
以上两点综合起来,就成了楼主所看到的“二维数组不要行必须要列”的现象
不要行,是因为行没用,传得是指向该数组首元素的指针,元素个数没法传
必须要列,是因为二维数组的列代表该数组首元素的数据类型,int[3]和int[5]是两种类型,必须分清楚
我还是那句话:不要使用大于一维的数组,一点用都没有