函数
函数是一个自包含的代码块,用于执行特定的任务或一组任务。函数提供了一种组织和模块化代码的方式,使其更具可读性、可维护性。
#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...
> 此处输出代码运行结果