七、用函数实现模块化程序设计——数组作为函数参数

调用有参函数时,需要提供实参。数组元素的作用与变量相当,一般来说,凡是变量可以出现的地方,都可以用数组元素代替。因此,数组元素也可以用作函数实参,其用法与变量相同,向形参传递数组变量的值。此外,数组名也可以作实参和形参,传递的是数组的第一个元素地址。

1、数组元素作函数实参

数组元素可以用作函数实参,但是不能用作形参。因为形参是在函数被调用时临时分配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个整体,在内存中占连续的一段存储单元)。在数组元素作函数实参时,把实参的值传递给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递。

2、一维数组名作函数参数

  1. 用数组名作函数实参时,向形参(数组名或指针变量)传递的是数组首地址的地址。
  2. 用数组名作函数参数,应该在主调函数和被调函数的分别定义数组,array是形参数组名,score是实参数组名,分别在其所在的函数中定义,不能只在一方定义。
  3. 实参数组与形参数组类型应一致,如不一致,结果将出错。
  4. 形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。在定义函数时,形参数组的大小是不起任何作用的,C 语言编译系统并不检查形参数组大小,只是将实参数组的首元素的地址传给形参数组名。
  5. 用数组名作函数实参后时,不是把数组元素的值传递给形参,而是把实参数组的首元素的地址传递给形参数组,这样两个数组就共占同一段内存单元。也就是说,形参数组中各元素的值如发生变化会使实参数组元素的值同时发生变化。这一点是与变量作函数参数的情况不同的,务请注意。在程序中常有意识地利用这一特点改变实参数组元素的值。

3、多维数组名作函数参数

多维数组名可以作为函数参数,这点与一维数组名的情况类似。
可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明,但是不能把第2维以及其他高维的大小省略。

猜你喜欢

转载自blog.csdn.net/lijiahao1212/article/details/129967993