【指针的高级声明】
这里先列举一些高级声明的例子,能自己揣摩清楚最好不过了,如果有想不懂的地方,请参见下方的识别方法。

代码:
int f; //声明f为一整型变量
int *f; //声明f为一指向整型的指针
int *f,g; //声明f为指向整型的指针,g为整型变量
int f(); //声明f为返回值类型是int的函数
int *f(); //声明f为一函数,返回类型是指向整型的指针
int (*f)(); //声明f是指针,指向返回值为整型的函数
int *(*f)(); //声明f是指针,指向函数,函数返回类型是指向整型的指针
int *(*f)[]; //声明f是指针,它指向元素为×××指针的指针数组
int **f(); //声明f是一个函数,函数的返回值是一个指向整型指针的指针
int *(*f())(); //声明f是函数,函数返回类型是某种指针,该指针指向返回类型为整型指针的函数
int (**(*f)())(); //声明f是指针,它指向某个函数,该函数返回类型是指向另一返回值为整型的函数的指针的指针
int f[]; //声明f是数组,数组元素是整型
int *f[]; //声明f是数组,数组元素是指向整型的指针
int **f[]; //声明f是数组,元素是指向整型指针的指针
int (*f)[]; //声明f是指针,它指向一个整型数组
int f()[]; //非法声明,函数不能返回数组
int f[](); //非法声明,数组的元素不能是函数
int (*f[])(); //声明f是一个数组,数组元素是某种类型的指针,这些指针指向返回值为整型的函数,即f是一个元素为指向返回值是整型的函数的指针的数组
int *(*f[])(); //声明f是一个数组,数组元素为某种类型的指针,这些指针指向的是函数,这些函数返回值类型为指向整型的指针
int **(*f[6])(); //声明f是一个拥有6个元素的数组,它的元素是:某种类型的指针,这些指针指向的是函数,函数返回值是一个指向整型指针的指针
int (*(*f)())[]; //声明f是一个指针,指向函数,该函数返回值为指针,它指向一整型数组
int *(*(*(*f)())[])(); //声明f是一函数指针,该函数返回一指针,该指针指向数组,数组元素是指针,那些指针指向返回值类型为整型指针的函数
int (*f)(int,float); //声明f是一函数指针,它指向一个接受两个参数的函数,函数返回值类型是整型
int *(*g[])( int, float ); //声明g是一个元素为指针的数组,这些指针指向一个函数,函数接受两个参数,返回值类型为指向整型的指针
明确各操作符的优先级,然后按优先级(若优先级相同则按结合性判断)顺序识别即可(若有括号,首先结合括号内的操作符),例如:
代码:
例子① int *(*f)();
/***
* 步骤:
* ①操作符有:解引用操作符 * 函数调用操作符 ()
* ②优先级顺序 () > *
* ③解读int *(*f)();
* 由于括号的作用,f首先是一个指针,然后由于函数调用操作符优先于解引用操作符
* 因此f是一个指向函数的指针,最后该函数的返回类型为 int *
* 最终结果:
* f是一个指向返回类型为 int * 型函数的函数指针
***********************************************************************/
例子② int (*(*f)())[];
/***
* 步骤:
* ①操作符有:解引用操作符 * 函数调用操作符 () 下标操作符 []
* ②优先级顺序 () == [] > *
* ③解读int (*(*f)())[]
* 由于括号的作用,f首先是一个指针,然后由于函数调用操作符优先于解引用操作符
* 因此f是一个指向函数的指针,由于外层括号的作用,得到最终结果
* f是一个函数指针
* 该指针指向一个函数
* 该函数的返回类型为一个指向×××数组的指针
*********************************************************************/
例子③ int *(*(*(*f)())[])();
相信大家根据以上两个例子能推出这个声明的含义了吧,其实就是一层一层的往外面走就是了
最终结果:
声明f是一函数指针,该函数返回一指针,该指针指向数组,数组元素是指针,这些元素指向返回值类型为整型指针的函数
转载于:https://blog.51cto.com/billhoo/642618
相关文章:

【大数据实时计算框架】Storm框架
一、大数据实时计算框架 1、什么是实时计算?流式计算? (一)什么是Storm?Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方…

引用-ZIGBEE-ZSTACK网络配置相关问题
下面是以道友问的问题,这里简单做分析,仅供交流学习用,有什么不对之处还请各位大虾指正。鄙人邮箱为:peterpanjy163.com. 欢迎交流!!1: 最主要的就是路由问题。我用06协议栈自带的例子程序sampl…

GHOST还原教程详细
要提醒您注意的是在使用 GHSOT 软件恢复系统时,请勿中途中止!如果您在恢复过程中重新启动了计算机那么您的计算机将无法启动!必定要接双硬盘或用光盘系统启动才可恢复 在您的系统遇到以下的情况之一 怀疑或确定您的系统中了病毒或木马 系统运…

【java】增强for循环的简单使用(遍历数组)
public class Test4 {public static void main(String[] args) {int[] intArray {1, 2, 4, 5, 7, 8};for(int number : intArray) {System.out.println(number);}} }

字符设备驱动程序 2
三、字符设备的注册内核内部使用struct cdev结构来表示字符设备。在内核调用设备的操作之前,必须分配并注册一个或多个struct cdev。代码应包含<linux/cdev.h>,它定义了struct cdev以及与其相关的一些辅助函数。 注册一个独立的cdev设备的基本过程…

qmake 简易教程
qmake 简易教程 qmake是Qt开发中默认的构建工具。posted on 2018-05-27 00:09 JichengTang 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/tangjicheng/p/9094857.html

MSF连环攻击实验
MSF连续攻击实验 一、实验拓扑 二、实验环境 Windows XP BT 5 32位 三、实验原理 通过扫描 XP主机,利用扫描出的漏洞建立 TCP会话,通过进程的提权,进一步获取目标机的控制权限 四、实验目的 掌握MSF连续攻击的原理和利用MSF攻击检测技术进行服…

【java】关于面向对象优点的个人理解
本文只是一些个人的理解,没有过多的进行基础理论的堆积,尽量说人话,让不懂的人也可以有一点概念。 相同的目标: 去第一餐厅吃饭 面向过程: 进入第一餐厅、买饭、吃饭 面向对象: 创建对象 第一餐厅、同…

(转)flash的Socket通讯沙箱和安全策略问题
一、沙箱和安全策略问题 1、此问题发生在连接时,准确地说是连接前,分别两种情况: 1.本地播放 本地播放时,默认情况下Flash Player将不允许swf访问任何网络。 访问http://www.macromedia.com/suppor…

asp.net code-behind
asp.net code-behind 技术是指页面与代码分离。 asp.net framework允许创建两种不同的页面,一种是单页面(页面包含页面代码与控件,页面代码包含在<script runat"server"></script>标签中),另外一…

python 基础_列表的其他操作 4
一.查找某个元素在数组中出现的次数 ,count的运用 a [a,b,c,c,c,a] print(a.count(c)) 二.把一个元素插入到另一个元素的末尾,extend。如下面,把b里面的值赋予给a。 a [a,b,c] b [d,e,f] a.extend(b) print (a) print (b) 输出的结果为 [a…

DataGrid和GridView单击背景变色双击颜色还原
DataGrid中 首先我们假设.aspx文件中DataGrid的数据行的样式为 <AlternatingItemStyle BackColor"White" ForeColor"#284775" /><ItemStyle BackColor"#F7F6F3" ForeColor"#333333" /> 则在DataGrid的ItemDataBound事件中…

elasticsearch的备份和恢复(转)
vim /etc/elasticsearch/elasticsearch.yml path.repo: ["/data/backups/es_backup"] #备份目录,根据自己情况进行填写 systemctl restart elasticsearch.service mkdir -pv /data/backups/es_backup chmod 755 /data/backups/es_backup chown elas…

【javamatlab】以一个简单的例子实现java和matlab混编
目录 使用环境: MATLAB: matlab代码: 将matlab代码打包: eclipse: jar包配置: 使用jar包: 使用环境: jdk8(ide使用eclipse2019-6)、matlab2019a 应该从2018开始m…

转载CSDN - 从程序员到HR——面试经验分享
CSDN博客一周热文推荐,为您总结回顾过去一周的CSDN博客热门文章,推荐优质的博客作者,分享精华文章和优质博客。 [1] 谭海燕:北漂之惠普H3C面试经历 上一篇讲到了《北漂之百度面试》,今天跟大家分享我在H3C的面试经历。…

近期上海面试总结(一)
转眼来上海已经4年了,随着对公司业务的不断熟悉,同时通过与众多的人接触也渐渐加深了对职场的理解,从刚开始的初生牛犊不怕虎毅然来到上海,到如今已快有四个年头了,今年还是面临职场上的抉择,再次找工作吧&…

Expect 教程中文版
原文链接 本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的。 [BUG] 有不少部分,翻译的时候不能作到“信,达”。当然了,任何时候都没有做到“雅”,希望各位谅解。 [原著] Don L…

【智能小车】舵机的基本原理(学习自平衡小车之家的资料)
概述: 根据控制方式舵机应该称为微型伺服马达。早期在模型上使用最多,主要用于控制模型的舵面,所以俗称舵机。舵机特点是接受一个简单的控制指令就可以自动转到一个比较精确的角度。 注: 微型伺服马达:一个微型伺服马…

005本周总结报告
这周主要学习了java中的类和对象的知识点,发现和C中的类和对象极为相似,对于类和对象的概念理解起来也简单。同时在自学的过程中也把类的知识重新复习巩固了一下(如类的三大特征:继承,封装和多态,构造&…

IE6 下div高度显示的问题
IE6下默认的字体尺寸大致在 12 - 14px 之间,当你试图定义一个高度小于这个默认值的 div 的时候, IE 会固执的认为这个层的高度不应该小于字体的行高。所以即使你用 height: 6px; 来定义了一个 div 的高度,实际在 IE 下显示的仍然是一个 12 px…

ASP.NET Core 2 学习笔记(七)路由
ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为;当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理。从ASP.NET就已经存在的架构,而且用法也很相似,只有些许的不同。本篇将介绍…

[NOI2005]维护数列
输入格式 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目。 第 2 行包含 N 个数字,描述初始时的数列。 以下 M 行,每行一条命令,格式参见问题描述中的表格 输出格式 对于输入…

java 常用正则表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2&…

考研总结以及假期规划
从标题不难看出,这是自我总结的水文一篇 备考总结 持续了将近一年的备考时间结束了,漫无目的地玩了几天的手机之后,感觉需要做点什么来充实一下自己了。(写下这句话之后又回去玩手机了,直到昨天山东泰山拿了双冠王受到…

JAVA Functions in XI(转)
JAVA Functions in XI 1. Split Function 按字符分割成字符串数组 String [ ] StrArray LGORT.split(",") //-- pass LGORT to this UDF int len1 LGORT.length; for ( i0;i<len1;i){ result.addValue(StrArray[i]); } 2. Global Containers…

2018.5.29 Oracle连接到空闲例程
解决方法如下: 1、通过cmd命令窗启动Oracle:(最好是以管理员身份启动) C:\Users\Administrator>sqlplus /nolog SQL>conn /as sysdba 或者这种 conncet sys/123456orcl as sysdba //sys是用户名 123456是密码 。 后面的是数据库名字 SQL>s…

关于css中float的一切
原文:http://css-tricks.com/all-about-floats/ 这篇文章说的简单易懂 float是CSS中关于定位的属性。 float有4个值:none, left, right, inherit (继承父元素的float属性值) float的姐妹属性:clear clear有4个值:both…

【光纤通信】关于RFA(喇曼光纤放大器)
近日在准备考研复试,在学习光纤通信的时候对书中关于RFA的解释不是很理解,经过查阅文献后将自己此刻的理解记录一下。 喇曼散射 解释一: “入射泵浦光子通过光纤的非线性散射转移部分能量,产生低频斯托克斯光子,而剩…

艾伟_转载:学习 ASP.NET MVC (第五回)理论篇
本系列文章导航学习 ASP.NET MVC (第一回)理论篇学习 ASP.NET MVC (第二回)实战篇学习 ASP.NET MVC (第三回)实战篇学习 ASP.NET MVC (第四回)实战篇学习 ASP.NET MVC (第…

Jmeter(二十九)_dotnet搭建本地接口服务
这里使用的服务名为Bookshelf,在github上,自行下载。要运行此服务,需要.Net Core SDK 2.1或更高版本。如果尚未安装,从.Net Core官方网站下载并安装。 在本地克隆项目后,在命令行工具中打开项目文件夹并运行“dotnet r…