用函数实现模块化程序设计

用函数实现模块化程序设计
什么是函数

函数是实现一定功能的代码模块,可以实现代码的复用和模块化,C程序由函数组成,函数是组成C程序的最小单位。
C程序有一个或多个程序模块组成,每一个程序模块作为一个源程序文件。一个源程序文件可以为多个C程序共用。
说明:一个源程序文件是一个编译单位;C程序的执行是从main函数开始的,在main函数中结束整个程序的运行。
所有函数相互平行,相互独立,即函数不能嵌套定义。函数间可以相互调用,但不能调用main函数,main函数是被操作系统调用的。
从用户角度看函数分为库函数和用户自己定义的函数。
从函数形式看函数分为有参函数和无参函数,有参函数通过参数向被调用函数传递数据,无参函数主调函数不向被调函数传递数据,无参函数一般用来执行指定的一组操作。

函数的定义

1.定义方法
(1)定义无参函数:一般形式:
类型名 函数名()
{
函数体
}或
类型名 函数名(void)\void表示“空”,即函数没有参数。
{
函数体
}
函数体包括声明部分和语句部分。
(2)定义有参函数
有参函数的一般形式:
类型名 函数名(形式参数列表)
{
函数体
}
(3)定义空函数
类型名 函数名()
{}
空函数函数体是空的,调用此函数时,什么也不做,没有实际作用,一般用来将准备扩充功能的地方写上一个空函数,先占一个位置,以后用编好的程序代替。
注意:函数体中尽量不要出现输入和输出;
函数的返回值类型,即函数类型,是函数完成功能后的返回值的类型,如果没有,明确定义为void 。
如果有返回值,则在函数体中要使用return语句带回返回值,返回值只能是一个,return语句可以有多个,但只能执行其中一个。
函数名为任意合法的标识符,尽量见名知意。
形参 :函数完成功能时,所必须的已知条件。
函数体:用大括号括起来的内容,是函数功能的完整实现。

调用函数

一般形式:
函数名(实参列表)
如果是调用无参函数,则“实参列表”可以没有,但括号不能省。实参列表包含多个实参,各参数间用逗号隔开。
按函数出现的位置来分,有三种调用方式。
1.函数调用语句:把函数调用单独作为一个语句。这时不要求函数带回值,只要求函数完成一系列的操作。
2.函数表达式:函数调用出现在另一个表达式中。这时要求函数带回一个确定的值来参加表达式的运算。
如:c=2+max(a,b);
3.函数参数:函数调用作为另一个函数调用时的实参。
如:m=max(a,max(b,c));
以上只有函数调用语句需要有分号。
说明:实参可以是常量、变量或表达式,但要求它们有确定的值。函数调用时,实参与形参应相同或赋值兼容。字符型和int型可以互相通用。
函数调用过程
函数调用时,
1)程序的流程转到被调用函数中
2)给被调用函数中的局部变量(定义在函数内部的变量称为局部变量,包括形参一个函数中只能使用本函数定义的局部变量)分配内存空间
3)把实参的值,对应的传给形参,执行被调用函数的函数体,一直到遇到return语句或遇到}
函数调用结束
1)程序的流程回到主调函数中
2)回收被调用函数中的局部变量所占内存(卸磨杀驴)
3)如果有返回值,则将返回值带回函数调用处
形参的改变无法影响实参的值
问题:不同函数中,同名的变量,含义是否一样?—不一样,所占内存一定不一样
实参和形参在内存中占有不同的存储单元,实参无法得到形参的值。
函数的返回值
(1)函数的返回值是通过函数中的return语句获得的。一个函数中可以有多个return语句,但只执行一个。
(2)在定义函数时要指定函数的类型。
(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。即函数类型决定返回值的类型。
(4)对于不带返回值的函数,应当用定义函数“void类型”。这样系统就禁止在调用函数中使用被调用函数的返回值。此时在函数体中不得出现return语句。

被调用函数的声明和函数原型

在使用自己定义函数的时候,应在主调函数中对被调用的函数作声明。声明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便编译系统能正确识别函数并检查函数是否合法。在检查函数调用时要求函数名、函数类型、参数个数和参数顺序与函数声明一致,实参类型必须与函数声明中的形参类型相同或赋值兼容。
函数的首行(即函数首部)称为函数原型。
函数首部加;可以作为函数声明,因为编译系统不检查参数名,函数声明有以下两种形式:
①函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2)
②函数类型 函数名(参数类型1,参数类型2)
函数声明还可以写在函数外部,写在所有函数前面的外部声明在整个文件范围中有效。

函数的嵌套调用

函数不能嵌套定义,但可以嵌套调用函数。
例7.5 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
在这里插入图片描述
改进:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值