当前位置: 首页 > 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.zqtcl.cn/news/361565/

相关文章:

  • 烟台商城网站建设怎么样引流顾客到店方法
  • 北京做网站公司的排名python基础教程pdf
  • 网站建设为什么学flash建设工程询价网站有哪些
  • 网站内容建设机制企业管理模式有哪些
  • 中山网站建设文化价格建网站域名注册
  • 手机电影网站怎么做大连最新发布
  • 珠三角网站建设网页制作专业知识
  • 罗湖微信网站制作深圳做网站哪个公司最好
  • ps如何做ppt模板下载网站网站模板分类
  • 网站建设在线网站服务器和直播服务器一样吗
  • iapp网站做软件教程朋友圈广告投放平台
  • 优门设 网站网站代理 正规备案
  • 衡水做wap网站上海做网站吧
  • seo推广思路seo线下培训班
  • 没有备案的网站怎么做淘宝客html5开发手机网站
  • 酒店旅游团购网站建设推广普通话实践总结
  • 基本的网站开发技术路线建设网站的好处有哪些
  • 网站排行怎么做wordpress all in one seo插件
  • 河北特定网站建设推荐wordpress添加vip用户组
  • 北京商城网站建设地址asp.net网站开发 pdf
  • 如何用网页制作网站龙岩门户网站
  • 中国建设银行官网站下载建设网站弹出后加载不进去
  • 广告网站制作多少钱建设工程合同甲方
  • 一号网站建设誉重网站建设
  • 网站seo优化查询网站开发最合适的搭配
  • 做文员的网站知乎qq小程序怎么打开
  • 网站外链建设分析wordpress生成验证码发送代码
  • 网站设计与制作的过程珠海网站建设 旭洁科技
  • 网站建设项目经费的报告轻创网
  • 青岛网站建设制作软件开发培训学校排行