» C语言快速入门 » 1. 基础篇 » 1.6 函数

函数

函数是一个自包含的代码块,用于执行特定的任务或一组任务。函数提供了一种组织和模块化代码的方式,使其更具可读性、可维护性。

#include <stdio.h>

// 计算阶乘的函数
int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int num = 5;
    printf("The factorial of %d is: %d\n", num, factorial(num));
    return 0;
}

内联函数

inline 关键字用于建议编译器尝试将函数的代码内容插入到调用代码中,而不是生成函数调用。在某些情况下,这可以节约函数调用开销,提高性能。

#include <stdio.h>

// 内联函数定义
static inline int square(int x) {
    return x * x;
}

int main() {
    int num = 5;
    // 调用内联函数
    int result = square(num);
    printf("Square of %d is: %d\n", num, result);
    return 0;
}

变参函数

在 C 中,变参函数是一种可以接受可变数量参数的函数。stdarg.h 头文件提供了一组用于处理此类函数的宏和数据类型。一个常见的变参函数例子就是 printf 函数。

#include <stdio.h>
#include <stdarg.h>

// 整数求和的变参函数
int sum(int num, ...) {
    int result = 0;

    // 声明一个 va_list 以保存可变参数
    va_list args;

    // 将 va_list 初始化为指向第一个可变参数
    va_start(args, num);

    // 循环遍历可变参数并求和
    for (int i = 0; i < num; i++) {
        result += va_arg(args, int);
    }

    // 清理 va_list
    va_end(args);

    return result;
}

int main() {
    // 用不同数量的参数调用变参函数
    printf("Sum: %d\n", sum(3, 1, 2, 3));
    printf("Sum: %d\n", sum(5, 10, 20, 30, 40, 50));

    return 0;
}

注意,sum 函数需要至少一个固定参数(num)来确定可变参数的数量。va_arg 宏根据其类型获取每一个可变参数。

代码挑战

编写一个 C 程序,其中定义一个名为 calculateAverage 的变参函数,并计算变参的平均值。

Loading...
> 此处输出代码运行结果
上页
下页