第5章 函数
5.1 函数的定义
1. 函数是一段实现特定功能的子程序,C语言中函数分为以下两类:
1) C标准函数库:C语言预定义的函数,一般存放在以.h为扩展名的文件中,要使用这些库函数,就得使用预处理命令#include把它们所在的库文件包含进来。
2) 自定义函数:
(返回值类型)<函数名>(<参数列表>)
{
声明部分
语句部分
}
(1) 返回值类型是返回给调用者结果的数据类型,如果不指定的话,默认为int类型。void代表返回值为空,即不返回值。最好指定返回值类型!
(2) 函数名可以为任何合法的标识符,最好直观得反映函数的功能,增强函数可读性。
(3) 参数列表用逗号隔开,不能在一个类型名后跟多个参数名。如(float x,int y)
(4) 函数体部分分声明部分和语句部分,声明部分用于声明函数内部的临时变量,但是内部变量一般在函数体内时,才为其分配内存,一般为临时变量,在函数外部不能调用。
5.2 函数的调用
5.2.1 函数的参数传递
1. 形参和实参
1) 函数头中出现的参数是形式参数,简称为形参;函数调用时应根据被调函数形参的要求提供相应的真实的数据,简称为实参,
2) 形参和实参应做到个数相等,类型对应一致。
3) 尽管形参和实参可以同名,但为了避免混淆,一般不使用同名的实参和形参。
4) 当实参和形参的类型不一致时,实参会根据形参的类型进行转换。根据类型转换的知识可知,当实参类型低于形参类型时,会产生正确的结果;反之,则有可能出错。
2. 函数调用机理:函数调用时,实参将值赋予给形参后,即与实参脱离了关系,形参的变化不会影响到实参。要想影响到,可以使用传址调用的方法。
5.2.2 函数的返回值
1. 主函数main的返回值:主函数main一般返回整型的任何大小的值(一般为0),给操作系统,表示控制权交给操作系统。因为main返回int类型,一般main函数的返回值类型会省略掉,这是个不好的习惯。
5.2.3 函数的调用方式
1. 被调函数作为函数语句单独出现。
2. 被调函数作为另一个表达式的一部分。
3. 被调函数作为另一个函数的参数。
函数的嵌套调用。