Skip to content

1. 函数的定义

函数是 C/C++ 中的一种重要结构,用于封装一段代码,使其可以被多次调用,从而减少代码重复。

1.1 函数的基本格式

  • 语法

    cpp
    返回类型 函数名(参数列表) {
        函数体;
    }
  • 示例

    cpp
    int max(int x, int y) {
        return x > y ? x : y;
    }

1.2 定义一个求两个数最大值的函数

  • 问题背景

    • 如果直接在主程序中多次比较两个数的最大值,会导致代码重复。
    • 通过定义一个函数来求两个数的最大值,可以减少重复工作量。
  • 示例

    cpp
    #include <stdio.h>
    
    // 函数的定义
    int max(int a, int b) {
        return a > b ? a : b;
    }
    
    int main() {
        int a = 1;
        int b = 2;
        int max1 = max(a, b);
    
        int c = 3;
        int d = 4;
        int max2 = max(c, d);
    
        printf("max1 = %d\n", max1);
        printf("max2 = %d\n", max2);
    
        return 0;
    }

2. 函数的调用

函数的调用是指在程序中使用已经定义的函数。

2.1 无参函数调用

  • 语法

    cpp
    函数名();
  • 注意

    • 如果是调用无参函数,则不能加上实参,但括号不能省略。
  • 示例

    cpp
    #include <stdio.h>
    
    // 函数的定义
    void test() {
        printf("Hello, World!\n");
    }
    
    int main() {
        // 函数的调用
        test();    // 正确
        // test(250); // 错误,函数定义时没有参数
        return 0;
    }

2.2 有参函数调用

  • 语法

    cpp
    函数名(实参1, 实参2, ...);
  • 注意

    • 实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。
    • 实参与形参按顺序对应,一对一地传递数据。
    • 实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。
  • 示例

    cpp
    #include <stdio.h>
    
    // 函数的定义
    void test(int a, int b) {
        printf("a = %d, b = %d\n", a, b);
    }
    
    int main() {
        int p = 10, q = 20;
        test(p, q);       // 正确
        test(11, 30 - 10); // 正确
        // test(int a, int b); // 错误,不应该在圆括号里定义变量
        return 0;
    }

3. 函数的返回值

函数的返回值是指函数执行完毕后返回给调用者的结果。

3.1 返回值的定义

  • 语法

    cpp
    返回类型 函数名(参数列表) {
        函数体;
        return 表达式;
    }
  • 注意

    • 如果函数定义没有返回值,函数调用时不能写 void 关键字,调用函数时也不能接收函数的返回值。
  • 示例

    cpp
    #include <stdio.h>
    
    // 函数的定义
    void test(int a, int b) {
        printf("a = %d, b = %d\n", a, b);
    }
    
    int main() {
        int p = 10, q = 20;
        test(p, q);       // 正确
        test(11, 30 - 10); // 正确
        // test(int a, int b); // 错误,不应该在圆括号里定义变量
        return 0;
    }

3.2 带返回值的函数

  • 示例
    cpp
    #include <stdio.h>
    
    // 函数的声明
    int max(int x, int y);
    
    int main() {
        int a = 10, b = 25, num_max = 0;
        num_max = max(a, b); // 函数的调用
        printf("num_max = %d\n", num_max);
        return 0;
    }
    
    // 函数的定义
    int max(int x, int y) {
        return x > y ? x : y;
    }

4. 函数的声明与定义

  • 函数定义

    • 对函数功能的确立,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
  • 函数声明

    • 把函数的名字、函数类型以及形参的个数、类型和顺序通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。
  • 示例

    cpp
    #include <stdio.h>
    
    // 函数的声明
    int max(int x, int y);
    
    int main() {
        int a = 10, b = 25, num_max = 0;
        num_max = max(a, b); // 函数的调用
        printf("num_max = %d\n", num_max);
        return 0;
    }
    
    // 函数的定义
    int max(int x, int y) {
        return x > y ? x : y;
    }

5. returnexit 函数

  • return

    • main 函数中调用 return 结束程序。
    • 在子函数中调用 return 只是结束该子函数,并返回到调用处继续执行。
  • exit

    • main 函数中调用 exit 也会结束程序。
    • 在子函数中调用 exit 会立即终止整个程序。
  • 示例

    cpp
    #include <stdio.h>
    #include <stdlib.h> // 包含 exit 函数
    
    void sub_function() {
        printf("进入子函数\n");
        exit(0); // 立即终止整个程序
        // printf("退出子函数\n"); // 这行代码不会被执行
    }
    
    int main() {
        printf("进入主函数\n");
        sub_function();
        // printf("退出主函数\n"); // 这行代码不会被执行
        return 0;
    }

总结

  1. 函数的定义

    • 语法:返回类型 函数名(参数列表) { 函数体; }
    • 示例:int max(int x, int y) { return x > y ? x : y; }
  2. 函数的调用

    • 无参函数调用:函数名();
    • 有参函数调用:函数名(实参1, 实参2, ...);
  3. 函数的返回值

    • 语法:return 表达式;
    • 示例:int max(int x, int y) { return x > y ? x : y; }
  4. 函数的声明与定义

    • 函数定义:完整的函数实现。
    • 函数声明:通知编译系统函数的存在。
  5. returnexit 函数

    • return:结束当前函数。
    • exit:终止整个程序。

知识如风,常伴吾身