1.1 函数数的命名:
在C语言中,函数的名称可以是任何合法的名字,但不能是保留如int、double和sizeof等),也不能和程序中其他函数的名称相同。注意,不要使用与任何标准库函数相同的名称,以避免混淆。
区别自己的函数和标准函数的一个方法是,函数名用一个大写字母开头,但一些程序员觉得这相当受限。合法的函数名与变量名的形式相同: 一串字母和数字,第一个必须是字母。与变量名称一样,下划线字符算是一个字母。除此之外,函数的名称可以任意,但是最好能说明函数的作用。有效的函数名称示例如下:
cube_root FindLast Explosion Back2Front
通常,将函数名称(和变量定义为包含多个单词。有两个常见的方法可以采用:
1、在函数名称中用下划线分开每个单词
2、将每个单词的第一个字母大写。
这两种方法都很好,采用哪一个取决于个人爱好,但是最好在选择了一种方法后就固定使用它。当然,可以对函数使用一种方法,对变量使用另一种方法。
1.2、函数的参数
函数的参数在函数头中定义,是调用函数时必须指定的变元的占位符。函数的参数是一列变量名称和它们的类型,参数之间逗号分隔。整个参数列表放在函数名称后的括号中。
参数提供了调用函数给被调用函数传递信息的方法。这些参数名对于函数而言是本地的,调用函数时给它们指定的值称为“变元”。然后使用这些参数在函数体中编写计算操作,当函数执行时,参数使用变元的值。当然,函数也可以在函数体中声明本地定义的自动变量。最后当计算完成时,退出函数,将一个适当的值返回给原来的调用语句。如图所示:
调用函数时,要使用函数名称,后跟放在括号中的变元。在程序的某部分引用函数以调用它,在调用时指定的变元会取代函数中的参数。因此,函数执行时,会使用变元提供的值进行计算。调用函数时指定的变元的类型、个数和顺序必须和函数头中指定的参数一致。调用函数和被调用函数的关系与传送的信息如下:
1.3、指定返回值的类型
另一个常见的函数形式如下:
Return_type Function_name(List of Parameters - separated by commas)
{
Statements;
}
Return_type指定了函数返回值的类型。如果在表达式中使用函数,或函数在赋值语句的右侧使用,则函数的返回值会取代该函数。函数的返回值可以指定为C语言中任何合法的类型,包括指针。该类型也可以指定为void,表示没有返回值。如前所述,返回类型为void的函数不能用在表达式中,或用在赋值语句中的任何地方。
返回类型也可以是void*,表示指向void的指针。此时,返回值是一个地址值,但没有指定类型。希望返回一个能灵活用于各种目的指针时,就可以使用这个类型,例如分配内存的malloc()函数。最常见的返回类型如下:
当然,也可以把函数的返回类型指定为无符号的整数类型或指向无符号整数类型的指针。返回类型也可以是枚举类型或指向枚举类型的指针。如果函数的返回类型指定成void以外的类型,它就必须返回一个值。反选return语句可以返回这个值。
1.4、return 语句
return语句允许退出函数,从调用函数中发生调用的那一点继续执行。return语句最简单的形式如下:
return;
这个形式的return语句用于返回类型声明为void的函数,它不返回任何数值。然而较常见的return语句形式是:
return expression;
这个形式的return语句必须用于返回类型没有声明为void的函数,返回给调用程序的数值是计算expression的结果。
返回语句的expression可以是任何表达式,但是它生成的值的类型应该和函数头声明的返回值相同。如果它们的类型不同,编译器会将return expression的类型转换成需要的类型(如果可能的话)如果不能转换,编译器就生成一条错误信息。
一个函数中可以有多个return语句,但每个return语句都必须提供一个可以转换为函数头中为返回指定的类型的值。
注意:调用函数不必识别或处理被调用函数返回的值。
下面来用个例子说明下:
#include float average(float x, float y)
{
return (x + y) / 2.0f;
}
int main(void)
{
float value1 = 0.0F;
float value2 = 0.0F;
float value3 = 0.0F;
printf("Enter two floating-point values separated by blanks:");
scanf("%f %f", &value1, &value2);
value3 = average(value1, value2);
printf("\nThe average is: %f\n", value3);
return 0;
}
结果如下:
Enter two floating-point values separated by blanks:20.3 30.3
The average is: 25.299999
这个例子的执行顺序如下:
从上图中可以清晰的看到函数的执行顺序。
其中程序中可以用在printf()中做一下修改
printf("\nThe average is %f\n", agerage(value1, value2);
这样做也是对的。