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之前,我们一般是这 ...
随机推荐
- PHP 集成开发环境比较
专注了这么些年技术,没有养成记录和积累的习惯.如今乐于开源和分享经验,却停笔踌躇,不知该从何处说起.开通博客也有一段时间了,也没能写出一篇像样的文章,其实这篇文章也是被我拉壮丁似的用来练手的.思前想后 ...
- ADO调用分页查询存储过程
一.分页存储过程 ----------使用存储过程编写一个分页查询----------------------- set nocount off --关闭SqlServer消息 --set nocou ...
- JS权威指南笔记之数据类型
1.类型分为原始类型和对象. 2.原始类型有:数字类型,字符类型,布尔,和null undefind. 3.JavaScript里的函数都是真值. 4.函数和通过New关键字创建对象.这个样函数称为构 ...
- [javaSE] 网络编程(TCP,UDP,Socket特点)
UDP特点: 面向无连接,把数据打包发过去,收不收得到我不管 数据大小有限制,一次不能超过64k,可以分成多个包 这是个不可靠的协议 速度很快 视频直播,凌波客户端,feiQ都是UDP协议 TCP特点 ...
- UOJ#328. 【UTR #3】量子破碎
传送门 学过 \(FWT\) 看到操作 \(2\) 不难可以联想到 \(FWT\) 考虑一遍 \(\oplus\) \(FWT\) 会把 \(a_t\) 变成什么 \(a_t'=((-1)^{bitc ...
- 【MUI框架】学习笔记整理 Day 2
参考整理自MUI官网 http://dev.dcloud.net.cn/mui/ui/ (1)numbox(数字输入框) mui提供了数字输入框控件,可直接输入数字,也可以点击“+”.“-”按钮变换当 ...
- gotop(返回顶部)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ios 9 http
记录: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLo ...
- 网络I/O模型--05多路复用I/O
多路复用I/O模型在应用层工作效率比我们俗称的 BIO 模型快的本质原因是,前者不再使用操作系统级别的“同步 I/O”模型 . 在 Linux 操作系统环境下, 多路复用 I/O 模型就是技术人员通常 ...
- OpenGL学习--05--纹理立方体--BMP文件格式详解(转载)
http://blog.csdn.net/o_sun_o/article/details/8351037 BMP文件格式详解 BMP文件格式详解(BMP file format) BMP文件格式,又称 ...