C语言由于其形式的灵活、符号的复用以及优先级的复杂性导致了某些声明晦涩难懂。比如下面两种声明:
char *const *(next) ();
char *(*c[10]) (int **p);
对于不仅是初学者来说都不是简单的问题。那么我们应该如何来解析这种声明呢?
在《C专家编程》的Page65给出了一个较为通用的方法,细细体会,受益匪浅。
方法如下:
步骤1.取最左边的标识符(比如变量的标识符) 表示标识符是
步骤2.查看标识符右边的下一个符号,如果是方括号 对于每一对,表示“……的数组”
步骤3.如果是一个左括号 与右括号组成函数参数的放置,确定这是一个返回……的函数
步骤4.查看标识符左边的符号,如果是左括号 这个括号把已经处理的声明组合在一起,知道遇见对应的右括号,然后从第2步开始
步骤5.如果左边符号是下述之一
const
volatile
* 继续向左边读符号,知道所读不是这三者之一(const表示只读,volatile表示“volatile”,*表示指向……的指针)。然后重复第4步
步骤6.剩下的符号形成声明的基本类型 一并读取,如static unsigned int
=======================================
备注:上述方法有回返处理的过程。读起来比较难懂一点。不果根据我的个人经验,大家可以记住两点;1.首先找出最左边的那个标识符——变量最常见。2.读取完标识符首先查看标识符的右边,如果有圆括弧则为函数,为[]是数组,然后再看左边的符号。
再简练点就是:最左边标识符,其右、其左。
=======================================
解析上述声明:
char *const *(*next) ();
找到最左边的标识符next,看其右,非()或[]而是);看其左,为*,说明next是一个指针变量。再看其左,为(,那么再看其右,(),函数。这个指针变量指向一个函数。看其右, *,说明这个函数返回一个指针,这个指针指向一个char的常量指针(char *const)。
char *(*c[10]) (int **p);
利用现有的经验来得更简单和快捷:
这是一个数组c[10],这个数组为指针类型(每个元素都是一个指针变量),每个指针变量指向一个参数为int **p,返回值为char *的函数。
分享到:
相关推荐
这个压缩包文件名为"单片机C语言程序设计实训100例——基于8051+Proteus仿真",提供了100个实例,旨在帮助初学者深入理解和掌握8051单片机的C语言编程。 C语言是一种通用的、面向过程的编程语言,因其简洁明了的...
### C语言嵌入式系统编程修炼——背景篇 #### 嵌入式系统编程的独特性 嵌入式系统编程与普通软件开发有着本质的区别,它依赖于特定的硬件平台,要求编程语言能够直接操作硬件。尽管汇编语言能够满足这一需求,但因...
### DSP的C语言编程——深度解析与应用 #### 1. DSP C语言编程的重要性与优势 数字信号处理器(Digital Signal Processor,简称DSP)是一种专门设计用于处理数字信号的微处理器,广泛应用于通信、音频处理、图像...
《二十一天学通C语言——手把手教你学编程》是一本专为初学者设计的C语言教程,旨在通过系统的学习和实践,使读者在短时间内掌握C语言的基础与核心概念。C语言是一种强大的、通用的、面向过程的编程语言,被广泛应用...
《C语言进阶——嵌入式系统高级C语言编程》是一本专为C语言爱好者和嵌入式系统开发者设计的教程。它由东大教授凌明编写,深受读者好评,被认为是一份非常不错的学习资源。这份压缩包包含了作者对C语言深入理解的精华...
C语言是一种底层、通用的编程语言,因其高效性和灵活性,常被用于系统级编程和开发各种应用程序,包括管理系统的实现。以下是对这个成绩管理系统相关知识点的详细阐述: 1. C语言基础: C语言是计算机科学的基础,...
《单片机C语言程序设计实训100例——基于8051+Proteus仿真》案例压缩包,这是一份专为学习单片机C语言编程的实践教程,涵盖了丰富的实例,旨在帮助初学者深入理解单片机的工作原理和编程技巧。8051单片机是经典且...
在深入探讨“C语言进阶——嵌入式系统C高级语言编程”这一主题时,我们需要了解C语言在嵌入式系统中的应用以及它所涉及的关键概念。C语言因其高效、灵活和可移植性,成为嵌入式开发领域的首选语言。东南大学国家专用...
C语言是一种强大的、通用的编程语言,被广泛用于系统编程、软件开发、设备驱动和嵌入式系统等各个领域。它的简洁性和灵活性使得C语言成为许多程序员的首选。本资源包"**C语言学习笔记——基础知识篇**"是为C语言初学...
MATLAB是一种强大的数学计算软件,广泛应用于工程计算、数据分析和科学可视化等领域,而C语言则是一种通用的、低级别的编程语言,适用于系统开发、嵌入式系统以及性能要求高的应用。将C语言与MATLAB接口结合起来,...
5. **标准库**: C语言提供了丰富的标准库,如stdio.h(输入/输出)、stdlib.h(通用实用功能)、math.h(数学函数)等,这些都是编写C程序时不可或缺的工具。 6. **错误处理与调试**: 学习如何识别和处理运行时错误...
在“项目导向——C语言嵌入式应用编程.zip”这个压缩包中,我们可以发现一系列与C语言在嵌入式系统中的应用相关的教学资源。这些资源包括PPT演示文稿,涵盖了项目的介绍、预备知识以及具体项目的实施。让我们逐一...
C语言是一种强大的、通用的编程语言,它以其高效、灵活性和可移植性而被广泛应用于系统编程、应用软件开发、游戏制作等多个领域。学习C语言需要理论与实践相结合,通过课程设计,我们可以深入理解和掌握C语言的语法...
C语言是一种强大的、通用的编程语言,它以其简洁的语法和高效性能在IT行业中占据着重要的地位。在本项目中,我们将会探讨如何利用C语言来开发一个课程管理系统。这个系统可能包含学生信息管理、课程信息管理以及成绩...
C语言是一种强大的、通用的编程语言,由Dennis Ritchie在1972年开发,主要用于系统编程和应用编程。它以其简洁的语法和对底层硬件的直接访问而闻名,使得程序员可以高效地编写操作系统、设备驱动程序和其他底层软件...
C语言是一种强大的、通用的编程语言,它由Dennis Ritchie在1972年为Unix操作系统开发。由于其简洁性、效率和灵活性,C语言已经成为软件开发的基础,尤其在系统编程、嵌入式系统、驱动开发以及游戏引擎等领域广泛应用...
总之,"C语言课程设计——图书管理系统"项目涵盖了数据结构、C语言编程、软件设计等多个重要知识点,是提高编程技能和理解计算机科学概念的良好实践。通过实际操作,学生不仅能巩固理论知识,还能培养解决问题和团队...
总的来说,这个压缩包提供了一款老而经典的C语言编程环境——VC6.0,以及可能的相关学习资源,如图形编程的帮助文档,对于想要学习或复习C语言,尤其是准备计算机等级考试的用户来说,这是一个有价值的工具包。...
《C51编程入门经典——C语言嵌入式系统编程修炼之道》是一本专为初学者设计的指导书籍,旨在帮助新手快速掌握51单片机的C语言编程技巧。51系列单片机是嵌入式系统领域中最基础且广泛应用的微控制器之一,其简洁的...
《C语言实现图书信息管理系统——基于单链表》 在这个C语言期末大作业中,学生被要求设计并实现一个图书信息管理系统。系统的核心数据结构是单链表,这是一种基础但非常重要的数据结构,用于存储和操作一系列有序或...