多维数组元素可以作为函数的实参,其用法和普通变量作函数实参用法相同。另外,多维数组名也可以作为函数的实参和形参。在被调函数中对形参数组进行定义时,可以指定每一维的大小,也可以省略第一维大小的说明。
例如:
int array[5][6];
或
int array[][6];
二者都合法而且等价。但是不能把第二维以及其他高维大小的说明省略。如下面是不合法的定义:
int array[][];
int array[5][];
另外一种情况,在第二维大小相同的前提下,形参数组的第一维可以与实参数组不同,如实参数组定义为:
int array[5][10];
而形参数组可以这样定义:
int array[3][10];
或
int array[8][10];
因为二维数组都是由若干个一维数组构成的,而这时的形参数组和实参数组都是由相同类型和大小的一维数组组成的。C编译系统不检查第一维的大小。
【例6.13】有一个3×4的矩阵,求所有元素的最大值。
程序内容如下:
1 #include<stdio.h>
2 int max(int array[][4])
3 {
4 int i,j,k,max;(www.xing528.com)
5 max=array[0][0];
6 for(i=0;i<3;i++)
7 for(j=0;j<4;j++)
8 if(array[i][j]>max)
9 max=array[i][j];
10 return max;
11 }
12 int main()
13 {
14 int a[3][4]={{3,1,7,5},{6,8,10,4},{9,2,13,15}};
15 printf("max=%d\n",max(a));
16 return 0;
17 }
程序结果如图6.11所示:
图6.11 例6.13程序结果图
【例题中关键问题说明】
先使变量max的初值为矩阵中第一个元素的值,然后将矩阵中各个元素的值与之比较,每次比较后都把“大者”存放到max中,全部元素比较完毕后,max的值就是所有元素中的最大值。
如果将已知矩阵换成任意一个3×4矩阵,应该怎样修改程序?请回顾已学过的数组知识自己编写。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。