函数与数据内存
函数时C语言实现模块化设计的方式,它是C程序中最小的功能单位。在一个C程序的实现过程中,通过使用函数,可以把较大、较复杂的程序任务分解成若干较小、较单一的独立任务
函数的优点:
- 降低了程序设计的复杂度,单个函数的功能更简单、独立,容易编程实现
- 降低了程序员开发程序的工作量,编程人员可以在已有函数的基础上构造新的程序,而不需要从头做起,避免重复编写
- 对于一些具体操作的细节,可以通过函数隐藏,是整个程序结果更清晰
一个完整C程序的函数可以分为两类:
- 由用户自己定义并编写功能代码的函数,称为用户自定义函数
- 由C系统标准库提供的标准库函数(简称库函数),使用其功能时,用户只需要遵循其调用格式进行调用就可以了
1. 库函数
注:在调用库函数时,需要在源文件中加入预处理命令#include <库函数名>
2. 函数定义
1. 函数定义的格式
函数返回值的类型名 函数名(类型名 形式参数1,类型名 形式参数2···)
函数定义的注意点:
- 函数名、圆括号中的参数、函数体内的变量它们都是由用户自定义的标识符,应当符合C语言语法中标识符的命名规则
- 同一个C程序中,不允许出现同名函数
- 同一个函数体范围内,不允许定义同名变量(定义在复合语句中的变量除外)
- C语言规定,函数不可以嵌套定义,即不能在一个函数的函数体中去定义另一个函数,每一个函数都是一个独立的函数模块
- 函数的返回值类型若为int或char,通常类型关键字可以缺省不写
- 函数必须先定义(先声明),后调用
- 若函数功能仅仅是完成了一些操作,没有返回值,则函数首部的函数返回值类型名应定义为void
- C程序允许定义空函数。空函数没有返回值,圆括号中没有参数,函数体也是空的,编译时不产生任何指令,执行时若调用空函数则直接返回,不执行任何功能,它的存在就像是在程序开发时留下的"功能扩展槽"
2. 有参函数与无参函数
函数首部圆括号内的参数称为形式参数,简称形参。一个函数可以没有形参,也可以有一个或多个形参,这是根据函数本身所要实现的功能需要而设定的
通常,有参函数调用时,首先需要通过其形式参数得到具体的值,然后才执行该函数
而对于无参函数,函数没有必要必须提前得到一个值才能执行
函数有多个形式参数时,必须逐个说明每一个形式参数的数据类型,无论它们的数据类型一致还是不一致,这与变量定义的格式不一样
int Exp(int a, int b)
{
int x,y;
···
}
其中,a,b是形参,而x,y是函数Exp函数的局部变量。虽然a,b的数据类型一样,但函数定义格式要求它们必须分别说明自己的数据类型;对于局部变量x,y,则不需要如此
3. 函数的调用与返回
函数都是通过调用得以执行其功能的。
对于一个C程序来说,主函数main()是由系统调用执行的,而其他函数则是由主函数调用的。把调用其他函数的函数称为主调函数,被主调函数调用的函数称为被调函数。
程序的一次执行过程:程序开始执行时,系统总是会先找到程序中的main()函数,从main()函数开始顺序执行其函数体的语句,在执行的过程中遇到了对其他函数的调用时,再转入其他函数开始执行,直至返回到main()函数,最终待main()函数执行结束后,返回调用它的系统,程序的一次执行过程结束
1. 函数调用形式
函数调用的一般形式:
被调函数名 (实际参数1, 实际参数2···)
实际参数可以是C语