C语言讲义――第五章 函数与程序结构
其中 return (p);将表达式 p 的值作为 power 的返回值,p 被自动转换成 double 类型。
函数体最外层右花括号“}”等价于“return ;”,即对不含 return 语句的函数,当执行完函
数体中最后一个语句时,将自动返回调用处。
5.2.2 函数说明
C语言允许函数先调用后定义,也允许被调用函数在其它文件中定义。对于以上情况的
非 int 函数必须在调用之前作函数说明,作用是指出被调用函数的类型和参数的类型,否则,
编译程序认为被调用函数为 int 类型。
1.函数说明的一般形式为:
存储类型区分符 类型区分符 函数说明符(参数表);
2.说明:
(1)外部函数说明时可指定 extern 或不指定存储类型区分符,静态函数说明时必须指
定 static;参数表可以只列出参数的类型名而不需给出参数名。例如:
double power(int, int);
或 double power(int x, int n);
(2 )函 数 说明还可 以 和同类 型 的其它 变 量 放 在一个 说 明 语句中 ; 如: double x,
power(int ,int);
(3)对于无参数表的函数,说明时参数表应指定为 void.
(4)函数说明可位于调用函数体内或函数体外(一般位于程序开头部分),在函数体
外说明 的函数可在说明之后直到该源文件结束外的任何函数中调用,在函数体内说明的函
数只能在说明所在的函数体内调用,如例1中 main 调用了 power 函数,power 函数的定义在
main 之后,且类型为非 int 类型,所以在 main 的说明部分要对 power 进行说明,也可在 main
函数外面说明;
double power(int, int );
int main(void)
{ int i;
….
}
(5)传统C的函数说明不给出参数表,无论函数是否有参数()中均为空,如 double
power();
标准C保留了传统C的说明形式,但不提倡使用。带参数表的函数说明称为函数原形,
标准库函数的原型在系统提供的相应头文件中,因此,程序中调用标准库函数时只需用
#include 预处理控制包含所需的头文件,而不须写函数说明。
(6)如果函数的调用在函数定义之后,则不必在调用函数前进行说明,如例1中若
power 的定义出现在 main 的前面,则在 main 中可省略对 power 的说明。
5.3 函数调用与参数传递
一个函数可以被其它函数多次调用,每次调用时可以处理不同的数据,因此函数是对不
4