【笔记】【C语言】第七章 用函数实现模块化程序设计
- 函数的概念
- 函数的定义与调用
- 函数的递归调用
- 变量的作用域
- 函数的作用域
7.1 函数的作用
(1)函数的作用
将 较大的程序 划分为若干个 程序模块。每个模块实现一个特定的功能。
在高级语言中,用子程序实现模块功能。
函数间的调用关系:同一个函数可以被一个或多个函数调用任意次。
(2)
一个C程序 由一个或多个程序模块组成。
每个程序模块 作为一个源程序文件。
(3)
一个源程序文件 由一个或多个 函数以及其他内容(命令行、数据定义等)组成。
一个源程序文件 是一个编译单位。
(4)
C程序执行从main函数开始,在main函数结束。
函数之间平行。即定义时不能嵌套定义。
函数间不能嵌套定义。可以相互调用,但不能调用main函数。 (main函数由系统调用)
(5)
使用角度,分为:
- 标准函数(库函数):由系统提供。
- 用户自己定义的函数
函数形式,分为:
- 无参函数
- 有参函数:主调函数 向 被调用函数 传递数据。
7.2 定义函数
(0)对函数功能的确立
(1)一般形式
类型标识符 函数名 ( 形式参数表列 ) { 声明部分 语句部分 return () ; }
(2)形式参数 实际参数 函数返回值
定义函数时,称为形式参数。在主调函数中调用时,称为实际参数。
return () ; 后的值作为函数带回的值(不需要函数返回值,可以不写return 语句)
在不同的函数间,传输数据——参数,返回值,全局变量
(3)
形参在未被调用时,不占存储单元。
只有在调用时,才被分配内存单元,调用结束后,所占的内存单元被释放。
(4)
实参可以使常量、变量、表达式。但要求有确定的值。
与形参的类型应该相同或者赋值兼容。
字符型与整型可以互相通用。
实参与形参对数据的传递是“值传递”。
(5)
函数的返回值应该属于某一个确定的类型。 若是定义时指定类型,应该符合。
在C语言中,凡是不加类型说明的函数,自动按 整型 处理。
若return 中表达式的值 与函数类型 不同,以函数类型为准。
7.3 函数调用
(1)一般形式:函数名(实参列表)
(2)对实参的求值顺序,各系统并不一致。
(3)调用方式:
- 函数(作为)语句
- 函数表达式
- 函数参数(实际同2)
(4)声明:把函数名和函数参数的个数及函数参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确认识函数并检查函数调用是否合法。
库函数:文件开头用#include 命令,将调用有关库函数时所需用到的信息“包含”到本文件中。
自己定义的函数:应在主调函数中 对被调函数作声明。
若被调函数定义出现在主调函数前,则不用声明。
(5)
C语言不能嵌套定义函数,但可以嵌套调用
(6)递归调用:
在调用一个函数的过程中,直接或间接地调用该函数本身,称为函数的递归调用。
基本条件
下周再写...
函数声明