» C++快速入门 » 1. 基础篇 » 1.7 函数

函数

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

#include <iostream>

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

int main() {
    int num = 5;
    std::cout << "The factorial of " << num << " is: " << factorial(num) << std::endl;
    return 0;
}

内联函数

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

#include <iostream>

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

int main() {
    int num = 5;
    // 调用内联函数
    int result = square(num);
    std::cout << "Square of " << num << " is: " << result << std::endl;
    return 0;
}

变参函数

在 C++ 中,变参函数是一种可以接受可变数量参数的函数。cstdarg 头文件提供了一组用于处理此类函数的宏和数据类型。

#include <iostream>
#include <cstdarg>

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

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

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

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

    // 清理 va_list
    va_end(args);

    return result;
}

int main() {
    // 用不同数量的参数调用变参函数
    std::cout << "Sum: " << sum(3, 1, 2, 3) << std::endl;
    std::cout << "Sum: " << sum(5, 10, 20, 30, 40, 50) << std::endl;

    return 0;
}

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

Lambda 表达式

C++ 中的 Lambda 表达式允许你在代码中直接定义匿名函数或函数对象(闭包)。Lambda 表达式为创建函数提供了一种简洁的方式,特别适用于短生存周期和局部用途。

#include <iostream>

int main() {
    // Lambda 表达式,用于将两个数字相加
    auto add = [](int a, int b) {
        return a + b;
    };

    int result = add(3, 5);

    std::cout << "Result of adding 3 and 5: " << result << std::endl;

    // Lambda 表达式,用于将两个数字相乘
    auto multiply = [](int x, int y) -> int {
        return x * y;
    };

    result = multiply(4, 6);

    std::cout << "Result of multiplying 4 and 6: " << result << std::endl;

    // 没有参数的 Lambda 表达式
    auto sayHello = [] {
        std::cout << "Hello, Lambda!" << std::endl;
    };

    sayHello();

    return 0;
}

代码挑战

编写一个 C++ 程序,定义一个名为 calculateAverage 的可变参数函数,用于计算可变数量参数的平均值。

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