所谓函数,执行特定功能的代码块,可以有参数和返回值,目前为止,我们使用的函数都是函数库中提供的函数,如(printf
、getchar
和putchar
)等。现在,让我们自己动手来编写一些函数,我们现在通过编写一个求幂的函数power(m,n)
来说明函数定义的方法。power(m,n)
来说明函数定义的方法。power(m,n)
函数用于计算整数m的n次幂,其中n是正整数。
#include <stdio.h>
int power(int m, int n);
/* test power function */
int main()
{
int i;
for (i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2,i), power(3,
i));
return 0;
}
/* power: raise base to nth
power; n >= 0 */
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}
函数定义的一般形式为:
返回值类型 函数名(0个或多个参数声明)
{
语句
···
}
power函数的第一行语句
int power(int base,int n)
int
为返回值类型,power
为函数名,(int base,int n)
为参数表。power
函数的参数使用的名字只在power
函数内部有效,对其他任何函数都是不可见的:其他函数可以使用与之相同的参数名字而不会引起冲突。
我们通常把函数定义中圆括号内列表中出现的变量称为形式参数
,而把函数调用中与形式参数对应的值称为实际参数
。
power
函数计算所得的结果通过return
语句返回给main
函数。关键字return
的后面可以跟任何表达式,形式为:
return 表达式;
函数不一定都有返回值。不带表达式的return
语句把控制权返回给调用者,但不返回有用的值。
main
函数末尾有一个return
语句。由于main
本身也是函数,因此也可以向其调用者返回一个值,该调用者实际就是程序的执行环境。一般来说,返回0表示程序正常终止,返回值为非0表示出现异常情况。
出现在main
函数之前的声明语句
int power(int m,int n);
这个叫函数声明,表示power
函数有两个int
类型参数,并返回一个int
类型的值。这种声明称为函数原型,它必须和power
函数的定义和用法一致。如果函数的定义、用法和函数声明的原型不一致,将出现错误。
函数原型与函数声明中参数名不要求相同,而且函数原型中,参数名也不是必须的:
int power(int,int);
但是,合适的参数名能起到很好的说明性作用,因此我们在函数原型中总是指定参数名。