函数指针_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++基础——函数指针 函数指针数组
==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...
随机推荐
- 备受SQL青睐的“1”
写在前面:所用sql语句皆是在oracle 11g r1 数据库中实验. 在sql书写中,经常会用到数字1,例如 count(1),select 1, where 1=1等等,这样做有何好处呢?下面我 ...
- 413 Request Entity Too Large
做小视频上传,结果接口总是返回500,服务器端跟踪,根本就进不来,再次翻查,发下服务器返回的其实是413,只不过APP底层接口将所有不是200的回包都转成500了,问题定位. 有了错误码,有了描述,字 ...
- js跳转传递参数
额,利用j获取了GridView中选中行数据后,通过JavaScript做跳转,传递参数的时候发现,当参数有中文的时候就会乱码, 当然出现这种情况的时候就需要对跳转的url进行编码 var urlX ...
- SQL_函数
五毛叶 — SQL_函数: 如下: 1 SQL_Aggregate函数 AVG() - 返回平均值 COUNT() - 返回行数 FIRST() - 返回第一个记录的值 LAST() - 返回最后一个 ...
- CSS应用心得
单纯Html配合CSS网页 下面用程序来实际总结一下 首先,在写程序的应该具有一个良好的编程习惯. 第一:排版,拥有一个良好的排版,有助于我们能够快速的理解以及阅读程序: 第二:注释,就如以下程序,作 ...
- zend studio 的使用
1.将php项目导入到zend studio 中的方式为:http://my.oschina.net/maomi/blog/86077: 2.zend studio中将php项目导出的方式为:如果你会 ...
- NOIP2016报零记
其实,NOIP2016已经于10天之前就结束了,但是由于种种原因,没有写总结. 现在就来填上这个坑吧. DAY1: T1:一道简(kun)单(nan)的模拟,虽然ac,但是考试的时候总觉得怪怪的.并且 ...
- 作业三:WC项目
WC一个简单的文件检测系统 用c语言实现 不多说 上代码 #include<stdio.h> #include<stdlib.h> #include <io.h> ...
- range(start,end,step)与xrange(start, stop[, step])
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> xrange(10) xrange(10) >>> ...
- c#选择文件文件夹
C#选择文件 OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.InitialDirectory = "C://&qu ...