四、函数的调用
1、调用的一般形式:函数名(实参列表)(函数的定义后面为形参列表)
2、过程调用:不引用被调函数的返回值
3、函数调用:引用被调函数的返回值
4、函数调用若无返回值可能出现垃圾数据(若为函数调用,被调用的函数应该有返回值)
ps:过程调用和函数调用都与返回值无关
五、函数的类型及说明
1、函数的类型是指函数返回值的类型
2、对返回值不是int或char的函数,必须在定义时给出类型说明(没有说明的默认为int或char)
3、在main中对函数类型进行说明:类型 被调用函数名()或将函数定义放在main前
4、一个函数只能被定义一次,可说明多次,定义与说明不同
5、每个函数可当成外部变量,即全局的
6、只能以过程调用的函数,一般应定义为void类型,C编译不再为其返回值分配存储单元
ps:被调用的函数,其形参类型的说明,应该在整个函数块之前,即{}之前
被调用的函数,若在main函数之前,则不再需要特别的说明,若在main函数之后,则需要进行说明
六、函数的递归调用
1、函数的递归调用:在函数中又调用了其本身
2、递归调用分为直接递归调用和间接递归调用
直接递归调用:
a()
{...a();...}
间接递归调用:
a()
{...b();...}
b()
{...a();...}
3、递归与嵌套循环的区别:
递归调用终止于系统空间耗尽之时,循环嵌套会陷入死循环(死循环永远不会停)
递归调用是循环和函数之间,死循环是在循环与变量之间,所以递归更占空间
4、编写递归之前,应先给出递归的边界条件(若无,则递归无从终止)和递推公式(若无,则不是递归)