好 接下来 我们来讲函数
构建C程序的最佳方式 就是模块化程序设计
C语言中 最基本的程序模块被称为 函数
所以 这个知识点的重要性不言而喻
这里 我们讲个故事
诸葛亮六出祁山时 为了逼司马懿出战 派人送给力司马懿一件女人衣服
司马懿只是为使者 诸葛亮的饮食起居
使者感叹丞相 吃的很少 每天睡不了多久 责罚都要亲自监工
看着好像诸葛丞相什么都做 但这也是压垮他的根本原因 在任何工作 特别是我们程序设计中 这种工作集中化都是非常被排除的
推广分工流程
读多少行的程序能让你不头疼?
假如系统提供的函数printf0)由10行代码替换:那么你编过的程序会成什么样子?
实际上一个 printf0 有上千行代码
main()中能放多少行代码?
如果所有代码都在main0)中,怎么团队合作?
如果代码都在一个文件中。怎么团队合作?
什么是模块化程序设计?
将解决一个复杂问题的抽象任务,分解成了若干个能够实现的简单问题的具体任务。这种方式被称为模块化程序设计
模块分解的基本原则 包含三个方面
1 分而治之
从组成上看 一个系统由许多功能组成,各个功能模块彼此有一定的联系,功能各自独立
从开发过程上看,不同的模块 可能由不同的人开发
2 自顶向下,逐步求精
我们模块化开发 顶部都只是一些粗糙的问题提案 负责提出问题 逐渐向下分成多个详细的解决方案,是一个越来越精细描绘怎么做的过程
简单说 将一个大问题 逐步分解成多个小的解决方案 逐步解决问题
3 信息隐藏
模块对不需要使用该模块信息的不允许访问,模块之间只交换必要信息
模块化程序的特点:
1 程序变得简短且结构清晰,可读性好。
2 程序模块相对独立,简化设计,有助于控制程序设计的复杂性。
3 各模块功能单一并且相互独立,能够限制错误的范围,提高程序的可靠性。
4 程序采用积木式组装模块,模块可以共享,减少重复代码,提高程序开发的效率。
5 模块的裁剪、移植和扩充非常方便,能够提高程序的可维护性。
6 有利于集体开发,分工合作,缩短程序的开发周期。
C语言的模块化程序结构
1 C语言是通过函数来实现模块化程序设计的。
2 一个C程序由一个或多个源程序文件组成。
3 一个源程序文件由一个或多个函数组成,有且只有一个main()主函数。
4 主函数可以放在任何一个源文件中,maimO)主函数与程序中其他函数按任意顺序排列。
C程序各函数之间的关系 如下图
由主函数调用其他函数
函数的分类
按用户使用的角度划分
1 标准库函数 包括:
ANSIC定义的标准库函数
1.1 符合 ANSIC 标准的C 语言编译系统提供这些函数
1.2 函数分为输入/输出函数、数学函数、字符函数、字符串处理函数、格式转换函数、文件存取函数等几类。
第三方库函数
1.1 由其他厂商开发的C语言函数库
1.2 可以用来扩充C语言在图形、网格、数据库等方面的功能。
2 用户自定义函数
经过包装之后,也能形成函数库,供其他用户使用
自定义函数是需要开发人员根据集体情况 自行编写的 编写C程序某种意义上说 就是编写若干个自定义函数
按函数形式 函数可分为
有参函数和无惨函数
有参函数 就是 无论函数的定义与调用 都要写明参数 主调函数通过参数向被调函数传递信息
无惨函数 则表示 定义和调用不需要传递参数 主调与被调函数之间不需要传递信息
按函数的作用范围划分
分为 外部函数和内部函数
外部函数可以在整个程序中被调用
而内部函数只能在本文件中被调用