首页 > 编程笔记 > C++笔记 阅读:1

C++函数用法详解(新手必看,附带实例)

C++ 中的函数是一个封装了可以执行特定任务的代码块,它接受一些参数并返回一个值。

在实际编程和算法竞赛中,我们经常使用函数来提高代码的可读性和重用性,减少代码冗余,并以模块化方式解决问题。

有些算法必须使用函数来实现,或者说,使用函数实现会更加高效,例如递归、DFS搜索、最短路径等。

C++函数的声明和实现

函数的声明包括函数名、返回类型、参数列表等。例如,下面是一个名为 sum 的函数,它接受两个整数作为参数,并返回它们的和:
int sum(int a, int b);
这是函数的声明,告诉编译器有一个名为 sum 的函数,但并没有提供具体的实现。

函数的实现包括函数的具体代码,其格式如下:
【返回类型】 【函数名】(参数表)
{
    函数体
}
示例如下:
int sum(int a, int b)
{
    return a + b;
}
在这里,我们实现了 sum() 函数,它返回 a 和 b 的和。函数的声明和实现可以在同一个地方,也可以分开。如果分开,通常将函数的声明放在头文件中,函数的实现放在源文件中。

需要注意的是,一个函数内部可以同时包含多个 return 语句,只能返回一次,一旦执行了 return 语句,函数就会终止,函数中的后续代码将不再执行。

C++函数的调用

当我们需要使用函数时,可以通过函数名和参数列表来调用它。例如,可以调用上面的 sum() 函数来计算 1 和 2 的和:
int result = sum(1, 2);
在这里,sum(1, 2) 就是函数的调用,它会返回 1 和 2 的和,然后将结果赋值给 result。

C++ Lambda函数

C++11 引入了一种新的函数类型,称为 Lambda 函数,也称为匿名函数。

Lambda 函数可以在需要函数但不想定义函数的地方使用。例如,我们可以使用 Lambda 函数来定义一个自定义的排序规则:
vector<int> v = {3, 1, 4, 1, 5, 9};

sort(v.begin(), v.end(), [](int a, int b)
{
    return a > b;   // 降序排序
});
在这里,我们定义了一个 Lambda函数 [](int a, int b) { return a > b; },它接受两个整数作为参数,并返回它们的比较结果。然后将这个 Lambda 函数传递给 sort() 函数,告诉它我们需要按照降序排序。

Lambda 函数可以捕获外部变量,使得代码更加灵活。例如,我们可以定义一个 Lambda 函数,它捕获了外部的变量 x:
int x = 10;
auto is_less_than_x = [x](int a)
{
    return a < x;
};
在这里,is_less_than_x 是一个函数,它接受一个整数 a,返回 a 是否小于 x。这段代码使用了 auto 关键字自动推导函数的返回值类型,这个特性需要在 C++11 标准以上才能实现,否则会报错。但是请注意,尽管使用了 auto 进行自动推导,返回值类型也只能是一种,不能“在不同的函数出口返回不同的类型”。

Lambda 函数的捕获列表还可以采用其他方式,例如使用“=”表示通过值捕获所有变量的拷贝,而使用“&”表示通过引用捕获所有外部变量。

相关文章