文档介绍:第8章函数与变量
函数的定义
函数的参数和返回值
函数的声明和调用
函数的递归调用
外部函数与内部函数
变量的作用域和存储类型
函数
C语言提供的标准库中存放着若干已定义的函数,如常用的printf()、scanf()、fabs()、sqrt()等函数,在使用这些库函数时,需要使用文件包含命令(#include)将带有该函数定义的头文件包含到当前C程序中;
对于标准库函数中没有提供的函数常常需要用户编写自定义函数来实现诸多应用功能。
函数的定义
函数的定义形式有两种:经典C函数定义和标准C函数定义。在Turbo C中使用两种定义形式均可。
经典C中函数定义的一般形式是:
函数类型函数名(形参表列)
形参说明
{
声明部分
执行部分
}
函数的定义
标准C又提供了另一种形式的函数定义——函数原型定义,即将形参表列和形参说明和并在一起,放在函数名后面的括号中,其一般形式为:
函数类型函数名(类型形参1,类型形参2,,类型形参n)
{
声明部分
执行部分
}
其中第一行构成函数头,下面用花括弧括起来的部分构成函数体。
函数的参数和返回值
1 函数的参数
由前述可知,定义函数时的参数为形参,调用函数时的参数为实参。
形参和实参不同:
当函数未被调用时,形参只是形式上的参数,不占内存也无确定值。只有
当函数被调用时,形参才被分配内存单元,接收传递来的实参值;
函数的参数和返回值
函数返回值的取得是通过在被调函数中设置return语句得到的,
其格式一般为:
  return(<表达式>);
return语句的执行过程是:先计算return后括号内表达式的值,再将计算结果返回给主调函数。
函数的声明和调用
1 函数声明
一个函数调用另一个函数必须具备的前提是:
⑴被调函数已存在,也就是说,被调函数的定义已经存在。该被调函数可以是库函数,也可以是用户自定义的函数。
⑵对于库函数,调用前要在主调函数所在的源文件中用#include命令包含相应的头文件(即包含有该库函数的定义的文件);对于自定义函数,要在主调函数中对其进行声明。
函数的声明和调用
函数调用即主调函数通过传递某些信息来使用被调函数的功能。
函数调用的一般格式是:
函数名(实参表列);
其中,圆括弧内实参的个数、出现的顺序必须与函数定义中的形参保持一致,实参类型一般也应与形参表列对应相同,实参之间用逗号隔开。
函数调用过程
函数嵌套调用执行顺序