函数
1. 和数学中函数的不同
计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理;所谓出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序。
2. 函数声明
简单地,函数声明可以有以下形式:返回类型 标识符 ( 形式参数列表 )
其中,如果这个函数不返回任何东西,则 返回类型
的位置填 void
;如果不接受参数,形式参数列表(以下简称 形参列表)里面填 void
。
例如,要编写一个函数 say_hello()
,让它在屏幕上输出一段话(这个函数既不接受参数,也不返回值):
c
void say_hello(void) {
puts("Hello, World!");
}
例如,编写一个函数 print_add()
,让它在屏幕上输出两个数的和(这个函数接受两个参数,不返回值):
c
void print_add(double a, double b) {
printf("%g + %g = %g\n", a, b, a + b);
}
例如,编写一个函数 add()
,让它返回两个数的和(这个函数接受两个参数,返回一个值):
c
double add(double a, double b) {
return a + b;
}
3. 函数调用
使用 函数名 ( 实际参数列表 )
的形式调用函数。每个实际参数会替换对应位置上的形式参数。
当函数的形参列表为空的时候,实际参数列表(以下简称 实参列表)什么都不填。
例如,调用 say_hello()
:
c
#include <stdio.h>
void say_hello(void) {
puts("Hello, World!\n");
}
int main(void){
say_hello();
say_hello();
say_hello();
}
运行结果:
txt
Hello, World!
Hello, World!
Hello, World!
例如,调用 print_add()
:
c
#include <stdio.h>
void print_add(double a, double b) {
printf("%g + %g = %g\n", a, b, a + b);
}
int main(void){
print_add(1.2, 2.3);
}
运行结果:
txt
1.2 + 2.3 = 3.5
例如,调用 print_add()
和 add()
:
c
#include <stdio.h>
double add(double a, double b) {
return a + b;
}
void print_add(double a, double b) {
printf("%g + %g = %g\n", a, b, a + b);
}
int main(void){
print_add(add(3.5, 7.4), add(4.5, 4.4));
}
add(3.5, 7.4)
返回 10.9,add(4.5, 4.4)
返回 8.9。如同调用 print_add(10.9, 8.9)
,会输出:
txt
10.9 + 8.9 = 19.8