目录
1.函数的调用
函数调用,就是使用已经定义好的函数。
C语言中,函数调用有很多方式,如:
//函数作为表达式中的一项出现在表达式中
z = max(x, y);
m = n + max(x, y);
//函数作为一个单独的语句
printf("%d", a);
scanf("%d", &b);
//函数作为调用另一个函数时的实参
printf( "%d", max(x, y) );
total( max(x, y), min(m, n) );
函数的嵌套使用
函数不能嵌套定义,但可以嵌套调用。
例如:计算 sum = 1! + 2! + 3! + ... + (n-1)! + n!
#include <stdio.h>
//求阶乘
long factorial(int n){
int i;
long result=1;
for(i=1; i<=n; i++){
result *= i;
}
return result;
}
// 求累加的和
long sum(long n){
int i;
long result = 0;
for(i=1; i<=n; i++){
//在定义过程中出现嵌套调用
result += factorial(i);
}
return result;
}
int main(){
printf("1!+2!+...+9!+10! = %ld\n", sum(10)); //在调用过程中出现嵌套调用
return 0;
}
运行结果如下:
如果一个函数 A() 在定义或调用过程中出现了对另外一个函数 B() 的调用,那么我们就称 A() 为
主调函数
或
主函数
,称 B() 为
被调函数
。
2.函数声明
所谓
声明,就是告诉编译器我要使用这个函数,现在找不到它的定义不要紧,请不要报错,稍后我会把定义补上。
3.函数原型
函数声明给出了函数名、返回值类型、参数列表(重点是参数类型)等与该函数有关的信息,称为
函数原型。(函数原型的作用是告诉编译器与该函数有关的信息,让编译器知道函数的存在,以及存在的形式,即使函数暂时没有定义,编译器也知道如何使用它。
)
例如:定义一个函数sum(),计算从m加到n的和,并将sum()的定义放到main()后面。
#include <stdio.h>
//函数声明
int sum(int m, int n); //也可以写作int sum(int, int);
int main(){
int begin = 5, end = 86;
int result = sum(begin, end);
printf("The sum from %d to %d is %d\n", begin, end, result);
return 0;
}
//函数定义
int sum(int m, int n){
int i, sum=0;
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
运行结果如下:
例: 定义两个函数,计算 1! + 2! + 3! + ... + (n-1)! + n!的和
#include <stdio.h>
// 函数声明部分
long factorial(int n); //也可以写作 long factorial(int);
long sum(long n); //也可以写作 long sum(long);
int main(){
printf("1!+2!+...+9!+10! = %ld\n", sum(10));
return 0;
}
//函数定义部分
//求阶乘
long factorial(int n){
int i;
long result=1;
for(i=1; i<=n; i++){
result *= i;
}
return result;
}
// 求累加的和
long sum(long n){
int i;
long result = 0;
for(i=1; i<=n; i++){
result += factorial(i);
}
return result;
}
运行结果如下:
对于较短的代码也可以直接将函数定义在前面,不声明,但是这样做不能直接看到主函数,查看起来比较乱,不容易直接看到重要信息,将函数定义放到最后,就是尽量屏蔽不重要的信息,凸显关键的信息。