您的位置 首页 知识分享

C++ 函数指针:函数指针与 lambda 表达式

函数指针作为 ++ 中将函数作为值的变量,实现了动态调用函数的功能。lambda 表达式是匿名函数,提供了一种…

函数指针作为 ++ 中将函数作为值的变量,实现了动态调用函数的功能。lambda 表达式是匿名函数,提供了一种现代简洁的函数指针替代方案。函数指针指向函数地址并通过调用符号 (&) 绑定,lambda 表达式使用 [] 语法定义,并支持捕获外部变量。两者都允许灵活地调用函数,并在排序等实战案例中发挥作用。

C++ 函数指针:函数指针与 lambda 表达式

C++ 函数指针:函数指针与 Lambda 表达式

函数指针是 C++ 中的重要特性,它允许将函数作为一个值来使用。这使得可以动态地调用函数,从而增加了代码的灵活性。lambda 表达式是一种匿名函数,它为 C++ 函数指针提供了现代且简洁的替代方案。

函数指针

立即学习“”;

函数指针是一个指向函数的变量。它的语法如下:

returnType (*functionPointerName)(parameterList);
登录后复制

例如,以下代码声明了一个指向一个接受两个 int 参数并返回 int 的函数的函数指针:

int (*addFunctionPointer)(int, int);
登录后复制

要使用函数指针,必须将其指向一个实际函数。这可以通过地址运算符 (&) 来完成:

addFunctionPointer = &add; // add 是一个接受两个 int 参数并返回 int 的函数
登录后复制

现在,可以使用函数指针来调用函数,就像调用普通函数一样:

int result = addFunctionPointer(10, 20);
登录后复制

Lambda 表达式

Lambda 表达式是匿名函数,不需要显式声明函数名。它们的语法如下:

[captureClause](parameterList) -> returnType { functionBody };
登录后复制

其中:

  • captureClause:指定要捕获的外部变量。
  • parameterList:指定函数的参数。
  • returnType:指定函数的返回类型。
  • functionBody:指定函数体。

例如,以下代码创建一个 lambda 表达式,接受两个 int 参数并返回它们的和:

auto addLambda = [](int a, int b) { return a + b; };
登录后复制

与函数指针类似,lambda 表达式可以存储在变量中:

auto addLambda2 = addLambda;
登录后复制

并且可以像普通函数一样被调用:

int result = addLambda2(10, 20);
登录后复制

实战案例

以下是一个使用函数指针和 lambda 表达式对数字列表进行排序的实战案例:

#include <iostream> #include <algorithm> #include <vector>  using namespace std;  bool compare(int a, int b) {     return a > b; }  int main() {     vector<int> numbers = {10, 20, 5, 15, 25};      // 使用函数指针排序     sort(numbers.begin(), numbers.end(), compare);      // 使用 lambda 表达式排序     sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; });      for (int number : numbers) {         cout << number << " ";     }      return 0; }
登录后复制

输出结果:

25 20 15 10 5
登录后复制

以上就是C++ 函数指针:函数指针与 lambda 表达式的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/2173.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部