函数指针_typedef
一 函数指针
1 函数类型
函数的类型由它的返回值类型,和形参类型共通过决定,与函数名无关。
eg:bool lengthcompare(const string&, const string&);
该函数的类型是bool (const string&, const string&)
2 函数指针声明
声明一个上述类型的指针pf
bool (*pf)(const string&, const string&)
3 使用函数指针
(1)把函数名作为一个值使用时,该函数自动转换成指针.
pf = lengthcompare;
pf = &lengthcompare; // 跟上面的语句是等价的,&是可选的
(2)调用指针指向的函数
bool b1 = pf("aaa","bbb");
bool b2 = pf("aaa","bbb"); //等价调用
bool b3 = lengthcompare("aaa","bbb"); //另一个等价调用
4 重载的函数指针
编译器通过指针类型决定选用哪个函数,指针类型必须与重载函数中的某一个精确匹配
void ff(int*);// 第一个函数
void ff(unsigned int);// 第二个函数
void (*pf)(unsigned int) = ff;//pf指向的是第二个函数
5 函数指针的形参
函数的形参不能是函数类型,但可以是函数指针类型
void useBigger(int aa,bool pf (const string&, const string&)); // 第三个形参会自动转换为指针
void useBigger(int aa,bool (*pf) (const string&, const string&)); // 等价声明
6 返回指向函数的指针
函数的返回值不能是函数,但可以是函数的指针,返回类型必须显式声明为指针类型
eg:int(*f1(int))(int*,int);
函数f1(int )返回类型为int(*)(int*,int)的指针
typedef与using(using是c++11开始支持的用法)
typedef int INTT;----> using INTT = int;
typedef int* PINTT;----> using PINTT = int*;
typedef bool Func(int ,int);----> using Func = bool (int,int); // Func是一个函数类型
typedef bool (*FuncP)(int ,int);----> using FuncP = bool (*)(int,int); // FuncP是一个函数指针类型
函数指针_typedef的更多相关文章
- C++虚函数和函数指针一起使用
C++虚函数和函数指针一起使用,写起来有点麻烦. 下面贴出一份示例代码,可作参考.(需要支持C++11编译) #include <stdio.h> #include <list> ...
- 为什么 C++ 中成员函数指针是 16 字节?
当我们讨论指针时,通常假设它是一种可以用 void * 指针来表示的东西,在 x86_64 平台下是 8 个字节大小.例如,下面是来自 维基百科中关于 x86_64 的文章 的摘录: Pushes a ...
- C++函数指针总结
学习c++的过程中,指针是难点,熟悉了指针之后,还有一个让人很蛋疼的难点,那就是函数指针了.本博文详细介绍一下常见的各种坑爹的函数指针. 至于指针的详细学习,推荐这篇博文C++指针详解 与数据一样,函 ...
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- 结构体内嵌函数指针实现C语言面向对象
结构体内嵌函数指针 #include<stdio.h> void say(int age) { printf("我%d岁了\n",age); } struct stud ...
- 用typedef定义函数指针的问题
在学习windows API的时候,遇到下面这段代码 以前见过的typedef的用法都是给一个数据类型取一个别名 typedef oldTypeName newTypeName 这种给数据类型 ...
- 你必须知道的指针基础-7.void指针与函数指针
一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针” ...
- objective-c中的@selector()和 c /c++的函数指针
先看tomcat里用到的代码: //然后开始动画 //把图片放到animationImages,接受数组参数 self.tom.animationImages = arrayImage; //设置时间 ...
- C++基础——函数指针 函数指针数组
==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...
随机推荐
- PowerDesigner中Name与Code同步的问题
转自:http://blog.sina.com.cn/u/48932504010005t9 PowerDesigner中,但修改了某个字段的name,其code也跟着修改,这个问题很讨厌,因为一般来说 ...
- 【 D3.js 入门系列 --- 6 】 如何让图表动起来
[5.1]节中制作了一个比较完善的图表,但它是静态的,想做出它的动态效果吗?在D3中只需要短短的几行代码即可. 这一节将涉及4个函数的使用. 1.transition() 启动转变效果只需要添加这个即 ...
- 最小生成树——prim算法
prim算法是选取任意一个顶点作为树的一个节点,然后贪心的选取离这棵树最近的点,直到连上所有的点并且不够成环,它的时间复杂度为o(v^2) #include<iostream>#inclu ...
- 评价qq拼音输入法
我目前正在使用qq拼音输入法,从人机交互设计方面,我对qq输入法从用户界面.记住用户选择.短期刺激和长期使用的好处坏处.不让用户犯简单错误这四个方面进行了评价. 1.从用户界面方面: qq输入法用户界 ...
- jQuery的选择器中的通配符使用介绍
$("input[id^='data']");//id属性以data开始的所有input标签 $("input[id$='data']");//id属性以dat ...
- mysql 根据某字段特定值排序
比如: 表 :user 字段:orders (值为 1,2,3) 要求根据字段 orders 按2 -> 1 -> 3 排序 使用以下语句实现SELECT *FROM userORDER ...
- input 边框颜色
border 的属性 有三个 border:5px solid red; 如果上述值缺少一个没有关系,例如border:#FF0000;是允许的. 分别对应:border-width, border- ...
- eclipse编辑器配置
1.添加行号 在侧边空白处右键 勾选如图 2.改字体 window -> preferences 字体的常用配置 Consolas有一个问题是中文字体难以看清 解决方式有两种:一.把字体设置为C ...
- 使用SAXReader读取ftp服务器上的xml文件(原创)
根据项目需求,需要监测ftp服务器上的文件变化情况,并将新添加的文件读入项目系统(不需要下载). spring配置定时任务就不多说了,需要注意的一点就是,现在的项目很多都是通过maven构建的,分好多 ...
- 威纶触摸屏和三菱PLC3S之间的通信设置
触摸屏软件中: PLC型号:FX3U\FX3G 接口类型:RS-485 4W 端口:COM2(19200,E,7,1)