首页 理论教育C语言程序设计实用教程:数组作为函数参数

C语言程序设计实用教程:数组作为函数参数

【摘要】:首先数组元素可以作为实参,其用法与变量完全相同。图5.5程序运行结果说明:用数组名作函数参数,应该在主调函数和被调用函数分别定义数组,例中array 是形参数组名,score 是实参数组名,分别在其所在函数中定义,不能只在一方定义。图5.8程序运行结果用数组名作为函数参数时应注意以下几点:形参数组和实参数组的类型必须一致。

除了变量作为函数的参数之外,数组是特殊变量的集合,也可以作为函数的参数。首先数组元素可以作为实参,其用法与变量完全相同。其次,数组名也可以作为实参和形参,函数调用时传送的是数组的地址

1.数组名作为函数参数

【例5.6】设有一维数组score,存放10 个学生的成绩,求平均成绩。

程序运行结果如图5.5 所示。

图5.5 程序运行结果

说明:

(1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组,例中array 是形参数组名,score 是实参数组名,分别在其所在函数中定义,不能只在一方定义。

(2)实参数组与形参数组类型应一致(譬如float 型),如果不一致,将出错。

(3)在被调用函数中声明了形参数组的大小为10,但实际上不起作用,因为C 编译程序对形参数组的大小不做检查,只是将实参数组的首地址传送给形参数组。因此,score[n]和array[n]实际上指的是同一单元

(4)形参数组也可以不指定大小,只在定义数组时在数组名后面跟一个方括号。

为了被调用函数处理数组元素的需要,可以另设一个参数,传送数组元素的个数,如例题5.7。

【例5.7】给定一组数,计算其平均值。

程序运行结果如图5.6 所示。

图5.6 程序运行结果

可以看出,两次调用average 函数时,实参数组元素个数是不同的,在第一次调用时实参5 传送给形参n;第2 次调用时,实参10 传送给形参n。(www.chuimin.cn)

【例5.8】给一组数据中第i 个位置插入数据x。

程序运行结果如图5.7 所示。

图5.7 程序运行结果

2.用多维数组名作为函数参数

也可以用多维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。譬如int array[3][10]和int array[][10],二者合法等价。但是不能省略第二维的大小说明。因为不说明列数,系统无法确定多少行多少列。下面写法是错误的:

而形参数组第一维的大小可以是任意的,因为C 编译程序不检查第一维的大小。

【例5.9】有一个3×4 的矩阵,求所有元素中的最大值。

算法分析:先使变量max 的初值为矩阵中第一个元素的值,然后将矩阵中各个元素的值与max 相比,每次比较后都把数值大的元素存入max 中。全部元素比较完后,max 的值就是所有元素的最大值。程序如下:

程序运行结果如图5.8 所示。

图5.8 程序运行结果

用数组名作为函数参数时应注意以下几点:

(1)形参数组和实参数组的类型必须一致。

(2)形参数组和实参数组的长度可以不相同,因为在调用时只传送首地址而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,虽不出现语法错误,但是执行结果将与实际不符,应予以注意。