将一个二维数组作为参数传递到函数中,函数原型中该参数应定义为(列数为4的int类型二维数组):
int (*a)[4]; //true
int a[][4]; //true
int *a[4]; //false
对上述代码的理解:将[]与前面的类型结合,第一行首先定义了一个指针a,它指向一个有4个int元素的数组,而在另外的博客里我们说过,[]基本可以和*等价,故第二种表示方法也是可以的。而第三行表示的意义则完全不同,它定义了一个包含4个int*类型的数组,即数组中的每一个元素都是一个指向int类型的指针。
由于在定义函数原型的时候,我们在定义表示数组的指针时,已经将二维数组的列数传递给函数了,因此我们只需要将行数作为另一个函数的参数传递即可,函数可以接受任何行数的数组,但只能接受定义时指定了列数的数组。
在这里const要慎用,因为这里已经是间接关系了,容易出现错误,详细的关于const和指针见另一篇博客。