Skip to content

函数的定义和调用

无参无返回值

语法格式如下:

c
// 函数定义
void 函数名() {
    函数体
}

// 函数调用
函数名();
  1. 函数名是标识符的一种,需要遵循规则
  2. 函数只需要定义一次,反复调用
  3. 只定义函数,不调用函数,函数永远不会被执行
  • 案例需求:

    编写一个函数,里面实现 2 个数字相加,并打印相加后的结果

  • 示例代码:

c
#include <stdio.h>

// 函数定义
void my_add() {
    // 实现 2 个数字相加,并打印相加后的结果
    int res = 1 + 2;
    printf("res = %d\n", res);
}

int main() {
    // 函数调用
    my_add();

    return 0;
}
  • 执行流程

有参无返回值

  • 函数参数的作用:增加函数的灵活性

    可以根据需求在调用函数时,通过参数传入不同的数据

  • 语法格式如下:

    c
    // 函数定义
    void 函数名 (形参列表) {
        函数体
    }
    
    // 函数调用
    函数名 (实参列表);

    实参和形参的关系:从左往右,一一对应

  • 案例需求:

    编写一个函数,实现 2 个数相加,2 个数通过参数传递

  • 示例代码:

    c
    #include <stdio.h>
    
    // 函数定义
    void my_add(int a, int b) {
        // 实现 2 个形参相加,并打印相加后的结果
        int res = a + b;
        printf("%d + %d = %d\n", a, b, res);
    }
    
    int main() {
        // 函数调用
        my_add(10, 20);
    
        return 0;
    }
  • 执行流程

有参有返回值

返回值基本语法

  • 函数返回值的作用:函数外部想使用函数内部的数据

  • 语法格式如下:

    c
    // 函数定义
    返回类型 函数名 (形参列表) {
        函数体
    
        return 和返回类型一致的数据(或变量);
    }
    
    // 函数调用
    和返回类型一致的变量 = 函数名 (实参列表);

    return 是函数的专属关键字,只能用在函数内容

  • 案例需求:

    编写一个函数,实现 2 个数相加,2 个数通过参数传递,返回累加结果给外部使用

  • 示例代码:

    c
    #include <stdio.h>
    
    // 函数定义
    int my_add(int a, int b) {
        // 实现 2 个形参相加,并返回累加的结果
        int res = a + b;
    
        return res;
    }
    
    int main() {
        // 函数调用
        int temp = my_add(10, 20);
        printf("temp  = %d\n", temp);
    
        return 0;
    }
  • 执行流程

返回值注意点

  • return 的作用是结束函数

    函数内,return 后面的代码不会执行

  • 示例代码

    c
    #include <stdio.h>
    
    // 函数定义
    void func() {
        printf("11111111111111111\n");
    
        return; // 结束函数,函数内后面代码不会执行
    
        printf("222222222222222222\n");
    }
    
    
    int main() {
        // 函数调用
        func();
    
        return 0;
    }

函数的声明

  • 如果函数定义代码没有放在函数调用的前面,这时候需要先做函数的声明
  • 所谓函数声明,相当于告诉编译器,函数是有定义的,再别的地方定义,以便使编译能正常进行
  • 注意:一个函数只能被定义一次,但可以声明多次
c
#include <stdio.h>

// 函数的声明,分号不能省略
// 函数声明的前面可以加 extern 关键字,也可以不加
// extern int my_add(int a, int b);
int my_add(int a, int b);
// 另一种方式,形参名可以不写
// int my_add(int, int );

int main() {
    // 函数调用
    int temp = my_add(10, 20);
    printf("temp  = %d\n", temp);

    return 0;
}

// 函数定义
int my_add(int a, int b) {
    // 实现 2 个形参相加,并返回累加的结果
    int res = a + b;

    return res;
}

函数案例

  • 需求:自定义一个函数 my_max ,返回 2 个整数的最大值
c
#include <stdio.h>

// 函数定义
int my_max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

int main() {
    // 函数调用
    int res = my_max(100, 200);
    printf("res = %d\n", res);

    return 0;
}