其实函数传参时,数组都是以指针的形式传递的
func(int a[n][m])与func(int **a)并没有区别
函数也不会因为你在形参指定了n, m的值而检查出数组越界的问题
所以二维传参用func(int **a)和func(int *a[])func(int a[][n])等等完全没有区别!
越界的问题还是要靠程序员的约定解决,不能依靠a[n][m]中n、m的值来检查
例如定义函数
void func(int a[5][6])
{...}
而调用的时候
int b[2][3] = {0};
func(b);
这样是没有编译错误的
越界的问题要程序员在函数中做好约定
或者通过传递其他参数,比如传递行数列数...