Skip to content

函数

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