如何解析C语言的声明

一个声明:int *p[]

分为四部分:

(1)p

(2)p右面的符号(可以什么都没有)

(3)p左面的符号(可以什么都没有)

(4)最左面的类型说明符

 

解读一个声明先从p开始,然后的顺序是:右左右左右左右左····

看完了p,然后从p的右边开始看符号(因为优先级高的符号 [ ]和 ( ) 是放在右边的),如果有符号,就和p先结合。

看完右边的符号(如果有的话)后,就决定了p是什么,比如p右面是[],那么p就是数组,如果是(),那么p就是函数,如果什么都没有,那么p就是变量。

这时,就到p左边的符号发挥作用了(左边要么是 * ,要么就什么都没有)。

最后发挥作用是则是类型说明符(int,char,long······)。

 

 

实战演示:

 

int (*p)();

先看p
右面,由于有一个括号把p和*括起来,所以这个声明的最内层是(*p),所以p右面没有东西,那么p就是个变量。
左面,(*p)左面是*,所以p是一个指针变量。
右面,(*p)的右面是一个(),所以p这个指针,指向的是函数。
左面,什么都没有了。
最后是类型符,int,所以,p是一个指针变量,指向函数,函数返回值是int类型。

 


char (*(*x())[])();

先看x
右面,(),x是一个函数
左面,*,函数返回值类型是指针
右面,[],函数的返回值是指针,该指针指向数组
左面,*,数组内存放的数据是指针
右面,(),数组内的指针指向的是函数(函数指针)
左面,指针指向的函数的返回值是char

 

char (*(*x[3])())[5];

x
右面,[3],x是一个数组,数组内有三个元素
左面,*,数组内的元素是指针
右面,(),指针指向的函数
左面,*,函数的返回值类型是指针
右面,[5],指针指向的是数组,指向的数组容量是5
左面,char 数组内的元素是char类型

 

最后说一句,真不知道这样的声明定义出来的东西谁能看懂,我反正是不会用的。

 

转载于:https://www.cnblogs.com/feipeng8848/p/8593702.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5调整图像垂直边距,77.通过vspace和hspace属性可以分别调整图像的垂直边距和水平边距。()()...

具有东方建筑特色、.通图像规模宏大、气势雄伟的古代建筑群是( )属性水平完成规定的大作业分别Which of the following parks are the urban parks of New York?调整的垂Which of the following countries have once occupied New York city in the 17th century?…

JLBH示例1 –为什么应在上下文中对代码进行基准测试

在这篇文章中: 使用JMH和JLBH进行日期序列化的并排示例 在微基准中测量日期序列化 测量日期序列化作为适当应用程序的一部分 如何为您的JLBH基准添加探针 了解在上下文中衡量代码的重要性 在上一篇文章“ JLBH简介 ”中,我们介绍了JLBH&#xff08…

Javac可以编译,Java显示找不到或无法加载主类

运行时候加入完整包名。转载于:https://www.cnblogs.com/theWinter/p/8594354.html

计算机科学技术专业发展分析,计算机科学与技术发展现况分析

摘要:在这个科技突飞猛进发展的时代,计算机网络已经家喻户晓,在日常生活中也起着不可忽视的作用,计算机的发展提高了人们的生活质量,加快了信息的传播,现如今,各个国家都比较重视计算机科学与技…

Linux中拷贝和移动文件

拷贝和移动文件 序号 命令 对应英文 作用 01 tree [目录名] tree 以树状图列出文件目录结构 02 cp 源文件 目标文件 copy 复制文件或目录 03 mv 源文件 目标文件 move 移动文件或者目录 / 文件或者目录重命名 tree tree 命令可以以树状图列出文件目录结构 选项 …

计算机网络中对等层,【计算机网络】两个网络模型——OSI参考模型和TCP/IP模型...

计算机网络 两个网络模型计算机网络模型分层机制----规划通讯细节层与层之间之间是独立的、屏蔽的,下层为上层提供服务。一些概念实体:任何发送/接收信息的软件/硬件进程。对等层:两个不同系统的同级层次。对等实体:位于不同系统中…

aspect spring_使用Aspect和Spring Profile进行电子邮件过滤

aspect spring在Web应用程序开发期间,经常需要发送电子邮件。 但是,有时数据库中会包含来自生产的数据,并且存在在电子邮件测试执行期间向真实客户发送电子邮件的风险。 这篇文章将解释如何避免在没有在发送电子邮件功能中明确编写代码的情况…

SQL FOREIGN KEY 约束

SQL Primary KeySQL CheckSQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 让我们通过一个例子来解释外键。请看下面两个表: "Persons" 表: Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2Bus…

台式计算机欢迎界面下不去,Win7系统开机不显示欢迎界面的方法

现在办公人员做事情都讲究效率,甚至连电脑开机都不放过,win7系统加快开机速度的方法有很多种,开机不显示欢迎界面便是其中之一。有些用户觉得开机显示欢迎界面是非常浪费时间的一件事,想要删除电脑中的欢迎界面。但是很多电脑白不…

CompressedOops:Java压缩参考简介

在本文中,我们将向您介绍一种称为Compressed oops的JVM优化。 压缩oop的概念是由32位和64位体系结构之间的差异引起的。 因此,我们将对64位体系结构进行简短的回顾,然后再深入探讨压缩oop的主题。 最后,我们将通过一个简单的示例看…

CentOS7桌面版系统使用的一些小技巧

1、 清空~/.kde/ 文件下的文件,登陆后不显示桌面的解决方法 在使用CentOS7 桌面系统时,有时候打开文件会很卡。这时我们需要清空当前用户下的 .kde 文件下的所有文件。 再重新登陆该用户时,会发现桌面上的图标都不显示了。 首先查看一下系统语…

计算机网络流量图阅读与理解,计算机网络流量监控的设计与实现

摘要:网络管理的重要工作是进行实时网络监控,网络监控主要是进行网络流量,状态,行为信息的采集,将采集的信息进行统计和分析,得到网络的流量状态数据,采集的网络流量信息包括了动态信息和静态信息两部分,本文在此基础上,进行了网络流量监控管理系统的研究. 本文首先…

阿里一面经验总结

今天的面试很突然,中午十一点收到电话通知,下午五点面试,之前毫无准备【以后要坚决杜绝这种情况】,一共六个小时,可以说是特别紧张的,从挂断电话就一直坐卧不安,主要还是没复习心里没底&#xf…

html本地访问超时时限,本地主机访问不了nginx 页面,请求超时

SQL Tuning 基础概述04 - Oracle 表的类型及介绍Tables A table describes an entity such as employees. You define a table with a table name, such as ...数据库连接池原理 与实现(动脑学院Jack老师课后自己的练习有感)第一步: 首先创建一个数据库连接池的接口: 数据库连接…

[LintCode笔记了解一下]64.合并排序数组

Given two sorted integer arrays A and B, merge B into A as one sorted array. 思路: 因为A的后面的部分都是空的留出来给我们放元素,所以最好是从后往前塞元素进去 void mergeSortedArray(int A[], int m, int B[], int n) {// write your code hereint i m-1;int j n-1;…

微型计算机常用的worm是,2010江西省计算机等级考试试题 二级C试题考试答题技巧...

1、当前使用的微型计算机,其主要器件是由( B )构成的。A、晶体管 B、大规模、超大规模集成电路C、中、小规模集成电路 D、微处理器集成电路2、下列字符中,ASCII码值最小的是( B )A、a B、A C、x D、Y3、在计算机的应用中,“OA”表示( C)A、管…

关于避免对toString()结果进行解析或基于逻辑的美德

使用Java或我使用过的其他编程语言,我发现有时可以用该语言完成某些事情,但通常不应该这样做。 通常,这些误用语言似乎无害,当开发人员首次使用它们时可能有益,但后来同一位开发人员或另一位开发人员遇到了相关的问题&…

NYOJ90 整数划分(经典递归和dp)

整数划分 时间限制:3000 ms | 内存限制:65535 KB难度:3描述将正整数n表示成一系列正整数之和:nn1n2…nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。…

昆士兰科技大学计算机专业,昆士兰科技大学QUT计算机科学Computer Science专业排名第101-125位(2021年THE世界大学商科排名)...

2021年THE泰晤士高等教育计算机科学Computer Science专业世界大学排名公布,昆士兰科技大学QUT计算机科学世界排名第101-125位,昆士兰科技大学QUT计算机科学专业实力怎么样呢?下面美英港新留学介绍昆士兰科技大学QUT计算机科学专业培养计划&am…

不要讨厌HATEOAS Part Deux:HATEOAS的春天

在我关于HATEOAS的系列文章的最后结论中,我们将深入探讨如何使用Spring-Data-REST和Spring-HATEOAS实现HATEOAS。 HATEOAS的春天到了! 我整理了一个有效的项目,该项目将演示下面的代码示例以及其他一些功能。 该项目可以在这里找到&#xff…