第七章 函数(四)

四、数组作为函数参数 

1、数组元素作为函数实参

回顾一下数组元素这个概念,例如定义一个包含 10个元素的数组“int a[10];”, 这相当于定义了 10 个变量,分别为 a[0]-a[9] ,所以在这里,数组元素就可以当作普通变量来使用,既然当作普通变量来使用,将它们作为实参来调用函数当然也是没有问题的。

例:

2、数组名作为函数实参

在讲解函数调用形式时曾说过,实参和形参个数要相等,类型要一致,按顺序对应,一一传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,也就是单向传递,只由实参传递给形参,不能由形传递给实参。

前面已经看过了用变量作为函数的实参(这是将变盘进行值传递),此外,数组名也可以作为函数实参,数组名代表的是数组的首地址,所以,将数组名作为函数的实参进行传递时,传递的其实是数组的首地址,此时函数中的形参也应该用数组名(或数组指针,指针后面会讲解)。

值得强调的是:将数组名作为函数参数时,就不是”值传递"的概念了,不再是单向传递,而是把实参数组的开始地址(背地址)传递给了形参,这就相当于实参和形参指向(代表)了同一段内存单元,这其实叫地址传递,也就是说形参数组中各个元素的值,如果发生了改变,就等价于实参数组元素的值发生了相应的改变,这一点是与普通变量作为函数参数明显不同的地方。

例:有5个学生,考试成绩保存在一个数组中,词用一个函数,用来修改其中个学生的考试成绩。

有几点说明:

(1)如果实参为数组名,则形参也应该为数组名,也就是说,形参也应该被定义为数组。

(2)实参数组与形参数组类型必须一致,例如都为int型,否则,结果会出错或者出现想不到的事情。

(3)形参数组大小可以不指定,即使指定了也可以与实参数组大小不一致,因为C编译器对形参数组大小不做检查,只是将实参数组的首地址传递给形参数组,甚至可以定义形参数组大小比实参数组大,但超过实参数组大小的部分内存不要去引用,否则会导致程序立即或者不定时崩溃。例如如果像下面这样定义score函数:void score(int arr[9]){},形参中指定了数组大小并且比实参中的数组大小要大。千万不要去引用arr[5]-arr[8],甚至更大下标的元素。

3、用多维数组作为函数实参

可以用多维数组名作为形参和实参,形参数组在定义时,可以指定每一维的大小,也可以省略第一维的大小,但不能省略第二维的大小。记住一点,实参是多少行多少列,形参就尽量跟实参一样(也是这些行这些列),这样实参能引用的下标形参一样能引用,就会保证写的代码不出错误。其实只要明白数组名作为参数传递时,传递的方式是"传递地址"这样一个概念,就很简单。

例:

相关推荐

  1. 函数矩阵

    2024-01-09 17:42:02       30 阅读
  2. Python-函数进阶

    2024-01-09 17:42:02       9 阅读
  3. python 函数 (pycharm) (2)

    2024-01-09 17:42:02       8 阅读
  4. MySQL:MySQL的基本函数

    2024-01-09 17:42:02       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 17:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 17:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 17:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 17:42:02       18 阅读

热门阅读

  1. 17.热帖排行 + 生成长图

    2024-01-09 17:42:02       29 阅读
  2. 详解Nacos和Eureka的区别

    2024-01-09 17:42:02       30 阅读
  3. Hyperledger Fabric Peer 配置解析

    2024-01-09 17:42:02       35 阅读
  4. c++学习:list链表模板类实战(学生管理系统)

    2024-01-09 17:42:02       38 阅读
  5. 5《Linux》

    2024-01-09 17:42:02       26 阅读
  6. 2401d,d导入C的问题

    2024-01-09 17:42:02       39 阅读
  7. Nacos与Eureka的区别详解

    2024-01-09 17:42:02       29 阅读