二维数组作为参数:
看这样一个例子:
老师之前讲过,二位数组作为参数,写形参为:int (*arr)[][4]
主函数中调用该函数:
这样写,做了:
这样写,错了:
这样写,还是错了:
这样再写,还是错了:
那我加个过好,再写,还错:
行,那我补一个[4],恩???还错!??
到底怎么才行,我就不信了。
恩,还不行。表达式必须是指向对象的指针类型。
恩,我快要…
int类型的实参与int (*)[][4]类型的形参不兼容。。。
找到错误了,show函数传的参数错了。
应该这样写,编译就通过了:
我知道错在哪里了,在主函数中定义一个二维数组并且初始化。使用show函数,show的参数为arr,即数组名,根据数组名来写函数的形参。而我之前的思路错在先先函数的形参,然后再调用函数时再写实参,这样就错了,error:实参和形参匹配。
下面看主函数:
int main()
{
int arr[4][4] = {1};
Show(arr);
return 0;
}
Arr为二维数组,show的形参为数组名。那么就要搞清楚二维数组的数组名表示什么。
先看一位数组:
例如:arr[4] = {1,2,3,4};
数据名字 数组类型
Arr int * //数组名表示数组首元素地址
Arr +1 int *
Arr[1] int
Arr[1]+1 int
二维数组:int brr[3][4]
数组名字 数据类型
Brr int (*p)[4] //指向二维数组的指针
Brr[0] int *p
Brr[0][0] int
Brr[0] + 1 int *p[4]