一、概述
一个C程序可以分为若干个函数;每个程序有且只能有一个主函数(main),其它函数都是“子函数”;子函数可以互相调用,但主函数不能被调用;一个C源程序由一个或多个文件构成,一个源程序文件是一个编译单位
说明:①C程序的执行从main函数开始,调用其它函数后仍回到main函数,程序在main函数结束时结束;②所有子函数都是平行的,任何子函数都不属于其它函数;③从用户的角度看,函数可分为:标准函数,即库函数和自定义函数;④从函数形式看,可分为:无参数函数和有参数函数。
二、函数的定义
函数定义的一般形式:
类型说明 函数名 ([形式参数说明]) {函数体}
形式参数说明方法:类型说明 变量名[,类型说明 变量名]...
无参数函数的定义形式:类型说明 函数名() {函数体}
有参数函数的定义形式:类型说明 函数名 (形式参数说明) {函数体}
空函数的定义形式:类型说明 函数名 ([形式参数说明]){}
一般情况下,函数体由两部分组成:
{[局部变量说明]
语句
}
局部变量:函数体内定义的变量。其有效范围仅限于所在的函数内部,离开函数体则无意义。
三、函数参数(变量、数组)和函数值
一个C程序由若干个函数组成,各函数调用时经常需要传递一些数据。即调用函数把数据传递给被调用函数,经被调用函数处理后,得到一个确定的结果,在返回调用函数时,把这结果带回调用函数;各函数间的信息的往来是由参数传递和返回语句实现的。
1.形式参数和实际参数
函数参数:用于函数间数据的传递
形式参数:定义函数时使用的参数
实际参数:引用函数时使用的参数
说明:定义函数时,必须说明形参的类型。形参只能是变量或数组。函数被调用前,形参不占用内存;函数调用结束后,形参所占用的内存也将被回收;实参可以是常量、变量或表达式;实参与形参的类型必须一致。字符型和整型可以互相匹配;C语言中实参对形参的数据传递是“值传递”,即单向传递。它仅由参数的对应位置确定,与名字无关
2.函数的返回值
①返回函数值的方法:函数的返回值也就是函数值,是一个确定的值。如果一个函数有返回值,就必须使用return语句;一个函数中可以有一个以上的return语句,但不论执行到哪个return都将结束函数的调用返回主调函数;return语句中的括号可以省略;return后面的值可以是一个表达式。
②函数值的类型:函数的类型即函数值的类型;省略了类型说明的函数是int型的;return语句中表达式的值一般应与函数类型一致;如果不一致,则需要进行类型转换。只有数值型数据可以进行自动类型转换,以函数类型为准。
③不需要返回值的函数:如果函数中没有使用return语句,函数返回的是一个不确定的数值;如果一个函数不需要返回值(表示一个过程),可以用void做类型说明;如果一个函数被声明为void类型,就不允许再引用它的返回值(即只能用函数语句形式调用)。