二维数组的参数问题

二维数组作为参数:

看这样一个例子:

老师之前讲过,二位数组作为参数,写形参为: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]

猜你喜欢

转载自blog.csdn.net/zDavid_2018/article/details/81586647