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

led灯外贸网站建设58同城济南网站建设

led灯外贸网站建设,58同城济南网站建设,excel+表格+做的网站,大宗商品平台函数指针 函数指针指向的是函数而不是对象。和其他指针一样#xff0c;函数指针指向某种特定的类型。函数的类型由他的返回类型和形参类型共同决定#xff0c;而与函数的名字无关。 //比较两个string对象的长度 bool lengthCompare(const string ,const string );…函数指针 函数指针指向的是函数而不是对象。和其他指针一样函数指针指向某种特定的类型。函数的类型由他的返回类型和形参类型共同决定而与函数的名字无关。 //比较两个string对象的长度 bool lengthCompare(const string ,const string ); 要想声明一个可以指向该函数的指针只需要指针替换函数的名字即可pf的名字之前有一个* 因此pf是指针右侧是形参的列表表示pf指向的是函数观察左侧发现函数的返回数值是bool类型的。因此pf就是一个指向函数的指针其中该函数的参数是两个const string的引用返回的是bool类型。 //pf指向一个函数该函数的参数是两个const string的引用返回的数值是bool类型 bool (*pf)(const string ,const string );//未初始化 *pf两端的括号不可以省略如果没有这对括号则pf是一个返回数值为bool的指针的函数 //声明一个名为pf的函数该函数返回bool * bool *pf(const string ,const string );//未初始化 使用函数指针 当把函数的名字作为一个数值进行使用的时候该函数会自动地转化成指针。 //例如按照如下的形式将lengthCompare的地址赋值给pf //pf lengthCompare; //pf指向名字为lengthCompare的函数 //pf lengthCompare;//等价的赋值语句取地址符的符号是可选的还可以直接使用指向函数的指针调用该函数而不需要提前解引用指针 bool b1 pf(hello,goodbye); //调用lengthCompare函数 bool b2 (*pf)(hello,goodbye);//一个等价的调用 bool b3 lengthCompare(hello,goodbye);//一个等价的调用指向不同函数类型的指针之间不存在转换的规则但是我们可以为函数指针赋值一个nullptr或者数值为0的整型常量的表达式表示这个指针没有指向任何一个函数 重载函数的指针 当使用重载函数的时候上下文必须界定该选用哪个函数。如果定义了指向重载函数的指针 void ff(int *); void ff(unsigned int); void (*pf1)(unsigned int) ff;//pf1指向了ff(unsigned int) 函数的指针形参 和数组类似虽然不可以定义函数类型的形参但是形参可以是指向函数的指针。此时形参看起来是函数的类型实际上却是当成指针来使用//第三个形参是函数类型他会自动的转换成指针 void useBigger(const string s1,const string s2,bool pf(const string ,const string )); //等价的声明显式地将形参定义成指向函数的指针 void useBigger(const string s1,const string s2,bool (*pf)(const string ,const string )); //可以把函数作为实参的使用此时他会自动的转化成指针 useBigger(s1,s2,lengthCompare)可以使用类型的别名和decltype来简化使用函数指针的代码 //Func和Func2是函数的类型 typedef bool Func(const string ,const string ); typedef decltype(lengthCompare) Func2; //等价的类型 //Funcp和Funcp2是指向函数的指针 typedef bool (*Funcp)(const string ,const string ); typedef decltype(lengthCompare) *Funcp2; //等价的类型decltype返回函数的类型不会将函数的类型自动转化成为指针类型。因为decltype的类型是函数类型因此只有在前面加上*才可以得到指针。 //usingBigger的等价声明其中使用了类型的别名 void useBigger(const string s1,const string s2,Func); void useBigger(const string s1,const string s2,Func); 这两个语句声明的是同一个函数在第一句中编译器自动的将Func表示的函数类型转化为指针 返回指向函数的指针 和数组类似不能返回一个函数但是可以返回一个指向函数的类型的指针。必须将返回的类型写成指针的形式编译器不会自动的将函数的返回类型当成对应的指针类型进行处理。要想声明一个返回函数指针的函数最简单的方法是使用类型别名using F int(int*,int); //F是函数类型不是指针using PF int(*)(int *,int);//PF是指针类型和函数的形参一样返回的类型不会自动地转化成指针。必须显示将返回类型指定为指针。 PF f1(int); //正确PF是指向函数的指针f1返回指向函数的指针 F f1(int); //错误F是函数的类型f1不可以返回一个函数 F *f1(int); //正确显示的指定返回的类型是指向函数的指针 也可以直接使用下面的形式直接声明f1   int(*f1(int))(int *,int);按照由内达外的形式阅读这条语句f1有形参列表所以f1是一个函数f1前面有*所以f1返回的是一个指针指针的类型本身也包含了形参的列表因此指针指向函数该函数的返回类型是int。还可以使用尾置返回的类型的方式来声明一个返回函数指针的函数 auto f1(int) - int (*)(int *,int); 将auto和decltype用于函数指针类型 如果明确知道返回的函数是哪一个就可以使用decltype简化书写函数指针返回类型的过程。假定有两个函数返回的类型都是string::size_type,并且各有两个const string类型的形参编写第三个函数接收一个string类型的参数返回一个指针这个指针指向前两个函数中的一个。string::size_type sumLength(const string ,const string );string::size_type largerLength(const string ,const string );//根据形参的取值编写的getFcn函数返回指向上面函数的其中一个decltype(sumLength) * getFcn(const string ); 声明getFcn唯一需要注意的地方是牢记将decltype函数作用于某一个函数的时候返回的是函数的类型而不是指针类型。因此只有显示地加上 * 表示需要返回的是指针而不是函数的本身。
http://www.huolong8.cn/news/139032/

相关文章:

  • 站长之家的seo综合查询工具产品推广平台排行榜
  • 刷网站建设北京网站优化招聘
  • 绿植租摆网站建设wordpress开放平台
  • 提供邢台网站优化自己建设手机网站
  • 安徽建设住房建设厅网站郑州app开发定制多少钱
  • 网站源码设计做网站域名自己弄
  • zencart网站地图插件wordpress去底部版权
  • 丽水网站建设微信推广wordpress 私活
  • 网站的关键词科学家做实验的网站
  • 织梦可以做移动网站吗网站开发硬件配置
  • 女人做绿叶网站相亲拉人单县网站
  • 免费制作网站模板wordpress口腔
  • php与H5做网站企业做网站的流程
  • 网站怎么做弹出表单社交媒体营销
  • 河北工程大学网站开发成本厦门建设网官方网站
  • 专门做盗文网站的公司上海手机网站建设公司
  • 超炫的网站买源码做网站值吗
  • dw网站建设的心得体会wordpress 首页白屏
  • 那个网站可以做网站测速对比安泽网站建设
  • 建站公司山东济南兴田德润简介数据分析网站
  • 湛江做网站从wordpress 响应分页
  • 徐州网站建设制作工作室平面设计跟网站建设
  • 网站打开的速度特别慢的原因旅游网站系统wordpress
  • 做网站 写文章怎样加视频新网站建设教程
  • 网站后台的用户名网站域名区别
  • 海南省建设信息官方网站如何网站做百度推广
  • 深圳网站平台制作常州第一门户网
  • 礼品公司网站源码wordpress模板极简
  • 室内设计公司免费网站百度分公司
  • 用凡科网做网站怎么保存到桌面东莞手机微信网站制作