ZT 复杂的函数指针例子分析 2008
分类:
一个最简单的函数指针定义如下:
Void (*funcPtr) (); //funcptr是一个函数指针,它指向的函数没有参数,返回值为void
非常复杂的函数指针定义:
1. Void * (* ( * fp1)(int))[10];
解析:Void * X[10];è这是一个有10个void*类型的元素的数组。
X=* ( * fp1)(int),从而可以看出(*fp1)(int)它是一个指针,指向一个数组。这个数组有10个void指针类型的元素。
Fp1是一个函数指针,它的参数是一个int型的参数。返回值为一个指向含有10个void*元素的数组的指针。
2. Void * ( * fp1)(int)[10];
解析:void*X[10];èX是一个有着10个void*类型的数组
X=( * fp1)(int);
Fp1是一个函数指针,它有一个整型参数,其返回值是一个有着10个void*类型的元素的数组。
若是这个形式Void * ( * fp1)(int)[10],则其返回值为一个指向含有10个void类型的数组的指针。
3. Void ( * fp1)(int)[10];
解析:void X[10]èX是一个有着10个void类型的数组
X=( * fp1)(int);
Fp1是一个函数指针,它有一个整型参数,其返回值是一个有着10个void类型的元素的数组
若是这个形式,Void ( * fp1)(int)[10],则其返回值为一个有10个void类型的数组。
4. Float (*(*fp2)(int,int,float))(int);
解析:Float X(int)èX是一个函数,有一个整型参数,返回值是一个浮点数。
X=*(*fp2)(int,int,float);
Fp2是一个函数指针,它有三个参数,前两个是整型,最后一个是浮点型。其返回值是一个指针,是一个指向函数的指针(函数指针)。这个函数指针所指向的函数的原型是只有一个整型参数,返回值是一个浮点数。
5. Typedef double (*(*(*fp3)())[10])();
解析:fp3是一个函数指针;它不带参数;返回值是一个指针。
X=(*(*fp3)())
Typedef double (*X[10])()
X是一个数组,他有10个元素,它的元素都是函数指针,这个函数指针所指向的函数原型是一个没有参数,返回值为double类型的函数。
综合起来就是:fp3是一个新定义的数据类型,它是一个函数指针,这个函数指针所指向的函数原型是不带参数,返回值是一个指向数组的指针。这个数组有10个元素,其元素类型是一个函数指针,这个函数指针所指向的函数原型是一个没有参数,返回值为double类型的函数。
6. Int (*(*fp4())[10])();
解析:fp4是一个函数,他没有参数,返回值是一个指针;
X= (*fp4());
Int (*X[10])();
X是一个数组,其有10个元素,每个元素都是一个函数指针,这个函数指针所代表的函数原型是一个没有参数,返回值是整型的函数。
综合起来就是:fp4是一个函数,他没有参数,返回值时一个指向数据的指针,这个数组有10个元素,每个元素都是一个函数指针,这个函数指针所代表的函数圆型是一个没有参数,返回值是整型的函数。
ZT 复杂的函数指针例子分析 2008的更多相关文章
- [C++]函数指针与指针函数
函数指针与指针函数,之前总是分不清,今天就好好把它两认认清楚. 先从概念说起,简单是理解. 函数指针:是指针.一个指向某一个函数入口地址的指针. 指针函数:是函数.一个返回值是指针的函数. 记忆: 从 ...
- C++ 指向类成员函数指针的用法(转自维基百科)
类成员函数指针 类成员函数指针(member function pointer),是C++语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息. 目录 1 语法 ...
- c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind
一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...
- 对线程等待函数pthread_join二级指针参数分析
分析之前先搞明白,这个二级指针其实在函数内部是承接了上个线程的返回值. 看man手册,发现返回值是个普通指针.人家用二级指针来承接,可能准备干大事.这个可以自己搜索一下.原因嘛,二级指针是保存了这个地 ...
- C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子
先来不带参数的回调函数例子 #include <iostream> #include <windows.h> void printFunc() { std::cout<& ...
- 活生生的例子:qInstallMessageHandler接受指定类型的函数指针,这样就可以随心所欲的让程序员自定义函数名以及函数位置
理论:qInstallMessageHandler是被定义在全局空间里: http://doc.qt.io/qt-5/qtglobal.html#QtMessageHandler-typedef 实践 ...
- typedef 函数指针的使用(含例子)
C代码 //#include<iostream.h> #include<stdio.h> typedef int (*FP_CALC)(int, int); ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
- 从cocos2dx中寻找函数指针传递的方法
目的 看到群里有个朋友搞了好几天函数指针传递,没搞好.所以写一篇文章,旨在从cocos2dx中帮朋友们找到如何传递指针. 旧版本的函数指针传递 全局函数函数指针调用 一般在C++11之前,我们一般是这 ...
随机推荐
- 二维码ZBar之ZBarReaderView
参考:http://www.chinatarena.com/Html/iospeixun/201301/3985.html http://blog.csdn.net/chenyong05314/a ...
- Angular2 获取当前点击的元素
<a (click)="onClick($event)"></a> onClick($event){ console.log($event.target); ...
- Android 操作Sqlite
首先要用一个类来继承SQLiteOpenHelper,并必须实现 public DatabaseHelper(Context context, String name, CursorFactory f ...
- Abp中SwaggerUI的接口说明文档配置
项目中集成了swashbuckle,那么通过访问http://ip:port/swagger/ui/index,可以看到提供的接口列表.接口列表默认是没有提供接口说明信息的,但是swagger内部是集 ...
- Java基础-内部类介绍
java内部类介绍 内部类一共分为4种 成员内部类 静态内部类 方法内部类 匿名内部类 下面我会为大家详细介绍每一个内部类!! 成员内部类 成员内部类就好像是外部类的一个成员属性,也是内部类中最常见的 ...
- 一分钟配置jdk
一.下载jdk 直接进入网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- 深入理解java虚拟机---4虚拟机类加载机制
本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...
- oracle数据库逐步学习总结【基础二】
原创作品,转载请在文字开头明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10067872.html 接着上一篇,继续总结! 五.oracle表管理 首 ...
- tr,td高度不生效
功能:表格内容较长,但是页面高度有限,超出显示滚动条 阻碍:给tr或者td加高度都不生效,不显示滚动条 解决方案:td中加div,设置高度和内容溢出时的样式 <table border='1' ...
- 3D旋转效果
<!doctype html><html lang="en"><head> <meta charset="UTF-8&qu ...