当前位置: 首页 > news >正文

电子产品网站建设策划程序员个人网站开发

电子产品网站建设策划,程序员个人网站开发,青岛网站建设效果,网络营销平台的账号如何运营目录 函数指针 ​编辑 实例 函数指针作为某个函数的参数 实例 std::function轻松实现回调函数 绑定一个函数 作为回调函数 作为函数入参 函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量#xff0c;而函数指针是指向…  目录 函数指针 ​编辑 实例 函数指针作为某个函数的参数 实例 std::function轻松实现回调函数 绑定一个函数 作为回调函数 作为函数入参 函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量而函数指针是指向函数。 函数指针可以像一般函数一样用于调用函数、传递参数。 函数指针类型的声明 typedef type (*fun_ptr)(type,type); // 声明一个指向同样参数、返回值的函数指针类型实例 以下实例声明了函数指针变量 p指向函数 max #include stdio.h #define _CRT_SECURE_NO_WARNINGS typedef int(*func_ptr)(int, int);int max(int x, int y) {return x y ? x : y; }int main(void) {//p是指向max的函数指针func_ptr p max;//也可以写成 func_ptr p max;int a, b, c, d;printf(请输入三个数字);scanf(%d %d %d, a, b, c);/* 与直接调用函数等价d max(max(a, b), c) */d p(p(a, b), c);printf(最大的数字是 %d\n, d);return 0; } 函数指针作为某个函数的参数 函数指针变量可以作为某个函数的参数来使用的回调函数就是一个通过函数指针调用的函数。 简单讲回调函数是由别人的函数执行时调用你实现的函数。 以下是来自知乎作者常溪玲的解说 你到一个商店买东西刚好你要的东西没有货于是你在店员那里留下了你的电话过了几天店里有货了店员就打了你的电话然后你接到电话后就到店里去取了货。在这个例子里你的电话号码就叫回调函数你把电话留给店员就叫登记回调函数店里后来有货了叫做触发了回调关联的事件店员给你打电话叫做调用回调函数你到店里去取货叫做响应回调事件。 实例 实例中 populate_array() 函数定义了三个参数其中第三个参数是函数的指针通过该函数来设置数组的值。 实例中我们定义了回调函数 getNextRandomValue()它返回一个随机值它作为一个函数指针传递给 populate_array() 函数。 populate_array() 将调用 10 次回调函数并将回调函数的返回值赋值给数组。 #include stdlib.h #include stdio.hvoid populate_array(int* array, size_t arraySize, int (*getNextValue)(void)) {for (size_t i 0; i arraySize; i)array[i] getNextValue(); }// 获取随机值 int getNextRandomValue(void) {return rand(); }int main(void) {int myarray[10];populate_array(myarray, 10, getNextRandomValue);//函数的名称就是函数的地址for (int i 0; i 10; i) {printf(%d , myarray[i]);}printf(\n);return 0; } std::function轻松实现回调函数 #include functional #include iostreamstruct Foo {Foo(int num) : num_(num) {}void print_add(int i) const { std::cout num_ i \n; }int num_; };void print_num(int i) {std::cout i \n; }struct PrintNum {void operator()(int i) const{std::cout i \n;} };int main() {// store a free functionstd::functionvoid(int) f_display print_num;f_display(-9);// store a lambdastd::functionvoid() f_display_42 []() { print_num(42); };f_display_42();// store the result of a call to std::bindstd::functionvoid() f_display_31337 std::bind(print_num, 31337);f_display_31337();// store a call to a member functionstd::functionvoid(const Foo, int) f_add_display Foo::print_add;const Foo foo(314159);f_add_display(foo, 1);f_add_display(314159, 1);// store a call to a data member accessorstd::functionint(Foo const) f_num Foo::num_;std::cout num_: f_num(foo) \n;// store a call to a member function and objectusing std::placeholders::_1;std::functionvoid(int) f_add_display2 std::bind(Foo::print_add, foo, _1);f_add_display2(2);// store a call to a member function and object ptrstd::functionvoid(int) f_add_display3 std::bind(Foo::print_add, foo, _1);f_add_display3(3);// store a call to a function objectstd::functionvoid(int) f_display_obj PrintNum();f_display_obj(18);auto factorial [](int n){// store a lambda object to emulate recursive lambda; aware of extra overheadstd::functionint(int) fac [](int n) { return (n 2) ? 1 : n * fac(n - 1); };// note that auto fac [](int n) {...}; does not work in recursive callsreturn fac(n);};for (int i{5}; i ! 8; i)std::cout i ! factorial(i) ; ;std::cout \n; } 绑定一个函数 #include functional #include iostream//普通函数 void func(void) {std::cout __FUNCTION__ std::endl; } //静态类成员函数 class Foo { public:static int foo_func(int a){std::cout __FUNCTION__ ( a ) -:;return a;} };int main(void) {std::functionvoid(void) fr func;fr();std::functionint(int) fr1 Foo::foo_func;std::cout fr1(456) std::endl; } 作为回调函数 #include functional #include iostream class A { std::functionvoid() callback_; public:A(const std::functionvoid() f) :callback_(f) {}; void notify(void) {callback_();} }; class Foo { public: void operator()(void) { std::cout __FUNCTION__ std::endl;} }; int main(void) {Foo foo; A aa(foo);aa.notify(); } 作为函数入参 #include functional #include iostream void call_when_even(int x, const std::functionvoid(int) f) { if (!(x 1)){f(x);} } void output(int x) { std::cout x ; } int main(void) { for (int i 0; i 10; i){call_when_even(i, output);} std::cout std::endl; } 一些AI给出的回答 std::function是C标准库中的一个通用、可调用、多态的函数封装器可以用来存储任何可调用对象的引用如函数指针、函数对象、Lambda表达式等。它的主要作用是将函数作为参数传递实现回调函数的功能。 下面是一个简单的实例演示了如何使用std::function存储一个函数并调用它    在这个例子中我们定义了 #include iostream #include functionalvoid print_hello() {std::cout Hello, world! std::endl; }int main() {std::functionvoid() func print_hello;func();return 0; } 一个名为print_hello的函数用于打印Hello, world!。然后我们创建了一个std::functionvoid()类型的变量func并将print_hello函数的地址赋值给func。最后我们调用func输出Hello, world!。 在C中std::function是一个通用、可调用、多态的函数封装器可以用来存储任何可调用对象的引用如函数指针、函数对象、Lambda表达式等。std::function的模板参数T表示存储的函数的参数类型当T是一个函数指针类型时std::function可以用来存储一个函数指针当T是一个函数对象类型时std::function可以用来存储一个函数对象当T是一个Lambda表达式类型时std::function可以用来存储一个Lambda表达式。 下面是一些例子 // 存储一个接受两个int参数的函数 std::functionint(int, int) func1;// 存储一个接受一个int参数并返回一个int的函数 std::functionint(int) func2;// 存储一个不接受任何参数的函数 std::functionvoid() func3;// 存储一个Lambda表达式 std::functionint(int) func4 [](int x) { return x * 2; };在这些例子中func1和func2可以用来存储任何接受相应参数类型的函数func3可以用来存储任何不接受任何参数的函数func4可以用来存储一个接受一个int参数并返回一个int的Lambda表达式。 #include iostream #include functionalclass A { public:A(const std::functionvoid() f) :callback_(f) {};void print() {callback_();}private:std::functionvoid() callback_; };int main() {A obj([]() {std::cout Hello, World! std::endl;});obj.print();return 0; }在这个例子中我们定义了一个名为A的类它有一个构造函数接受一个名为callback_的std::functionvoid()类型的参数。我们还定义了一个名为print的方法用于调用callback_函数。在main函数中我们创建了一个A类的对象并将一个Lambda表达式作为其构造函数的参数传递。然后我们调用obj的print方法输出Hello, World!
http://www.pierceye.com/news/361565/

相关文章:

  • 广告网站建设实训报告做电商从哪里入手
  • 建电子商务网站需要多少钱做网站的简称
  • 制定网站推广方案网络营销网站分析
  • 商城网站系网站 png逐行交错
  • 陕西网站建设陕icp备免费虚拟机安卓
  • 优化教程网站推广排名东莞网站建设推广有哪些
  • 金阳建设集团网站电子商务系统 网站建设
  • 网站建设规模哪里有做app软件开发
  • 建站工具上市手机视频网站设计
  • 代做道具网站做地方门户网站不备案可以吗
  • 电子商务 网站前台功能想做微商怎么找厂家
  • 网站建设电子书做网站引入字体
  • 顺德建设网站公司分发平台
  • 个人门户网站模板下载婚纱摄影网站定制
  • 提高网站流量的软文案例手机腾讯网
  • 网站只做内容 不做外链深圳宝安区天气
  • 生物网站 template淘宝的网站建设怎么建
  • 苏州哪家做网站好些推广之家app
  • 网站开发计入管理费用哪个明细对网站建设的调研报告
  • 南头专业的网站建设公司wordpress数据量大网站访问
  • 龙华民治网站建设公司wordpress设置vip
  • 网站建设天猫店免费主机空间
  • 帮网贷做网站会判刑吗学it要多久多少学费
  • 陕西网站建设维护erp软件怎么安装
  • 沈阳网站建设简维软件工程在网站建设
  • 万维网网站续费云南建设厅网站执业注册
  • 判断网站首页民宿设计网站大全
  • .net如何建设网站做影视会员网站
  • 织梦网站安全免费咨询医生皮肤科专家
  • dw做网站背景图片设置网站建设设计作品怎么写