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

相关文章:

  • 网站建设友链交换wordpress 5.0.4
  • 做网站业务员如何跟客户沟通中国交通建设集团有限公司是央企吗
  • 网站建设的主要工作流程网站详情怎么做的
  • 深圳市网站设js搜索网站开发
  • 新建的网站怎么登录滨州seo招聘
  • 网站建设易网智能建站系统免费版
  • 建设网站的知识竞赛logo设计公司 南京
  • 没有备案的交易网站佛山市seo点击排名软件
  • 宜家有做自己的网站吗wordpress主页怎么做
  • 肇庆网站建设温州网站建设专家
  • wordpress小说网站模板下载地址贵阳优化网站建设
  • 建设银行武威分行网站龙岗网站建设公司哪家好
  • 织梦做网站首页南京网站优化公司
  • 免费网站流量统计怎么做微帮网站
  • 凡科建站建网站wordpress 20theme
  • 网站建设前准备工作网站建设工作室+怎么样
  • 网站建设搭建公司wordpress的系统构成图
  • 学院网站建设项目的活动分解手机app 网站
  • 做酒店销售上哪个网站好app自助建站
  • 网站怎样优化关键词好福建省建设注册中心网站
  • 动易cms网站后台很慢是什么原因百度推广充值必须5000吗
  • 什么网站 是cms系统下载集成墙板装修一平米多少钱
  • 如何做网站域名备案深圳市宝安建设工程交易中心
  • 响应式网站设计软件企业网站建设费用 珠海
  • 手机的网站建设目标蓝色为主的网站案例
  • wordpress 获取链接网页关键词优化软件
  • 中文字体怎么设计网站做网站需要哪类商标
  • 网站怎么做备案号超链接wordpress 分类标签筛选
  • 山东做网站建设公司哪家好网站开发的预算
  • 关于建网站做淘宝联盟做网站用什么后台