`
evasiu
  • 浏览: 165394 次
  • 性别: Icon_minigender_2
  • 来自: 广州
博客专栏
Fa47b089-e026-399c-b770-017349f619d5
TCP/IP详解卷一>阅读...
浏览量:12256
社区版块
存档分类
最新评论

C专家编程--分析C语言的声明

阅读更多

 1。 理解C语言声明的优先级规则

char* cpp;           //cpp是一个指向char的指针

const char* cp;  //cp是一个指向有const限定符的char的指针

cpp = cp;            //这样是合法的,因为“左操作数具有右操作数所所指向类型的限定符(空),再加上自身的限定符(const)。

cp = cpp;            //!!这样是不合法的。因为它们指向的类型不一样,一个是指向char,一个指向const char

 

A。 声明从它的名字开始读取,然后按照优先级顺序依次读取。

B。 优先级从高到低依次是:

        B。 1。 声明中被括号括起来的那部分

        B。 2。 后缀操作符:

                       () 表示这是一个函数

                       [] 表示这是一个数组

        B。 3。 前缀操作符: 星号*表示“指向...的指针“

C。 如果const和(或)volatile关键字的后面紧眼类型说明符(如int, long等),那么它作用于类型说明符。在其他情况下,const和(或)volatile关键字作用于它左边紧邻的指针星号。

 

所以有:

 

char* cpp;           //cpp是一个指向char的指针

const char* cp;  //cp是一个指向有const限定符的char的指针

cpp = cp;            //这样是合法的,因为“左操作数具有右操作数所所指向类型的限定符(空),再加上自身的限定符(const)。

cp = cpp;            //!!这样是不合法的。因为它们指向的类型不一样,一个是指向char,一个指向const char

 

 

 

实例分析:

 

char* const *(*next)();

 

首先提取next,它被括号包住,表示“next是一个指向...的指针”

接着重新从步骤2开始,得出“next是一个函数指针”,该函数参数列表为空

接着走到步骤5,得出“该函数返回一个指向...的指针”

最后剩下char* const表示“指向字符的常量指针”

 

所以char* const* (next)()声明:next是一个指向函数的指针,该函数返回另一个指针,它指向一个只读的指向字符的指针。 

 

  • 大小: 53.1 KB
分享到:
评论

相关推荐

    C语言入门经典(第4版)--源代码及课后练习答案

    Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门...

    你必须知道的495个C语言问题.pdf

    Steve Summit,著名的C语言专家。Usenet C FAQ的创始人和维护者,有近30年的C编程经验。毕业于麻省理工学院。他曾在华盛顿大学教授C语言课程多年。除本书外,他还与人合著了C Unleashed一书。 编辑推荐 全球C语言...

    C程序设计语言(第2版·新版中文)

    热门Tag JAVA C++ linux C# 教程 C语言 android 源码 PDF 编程 sql c Windows matlab ORACLE 源代码 api 中文 数据库 arm JavaScript 破解 数据结构 vc visual jQuery 计算机 答案 单片机 php JSP mfc .NET 中文版 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsudeen Jared Still 译者: 朱...

    学习MISRA C 系列连载讲座 邵贝贝主讲

    嵌入式系统应用工程师借用计算机专家创建的C语言,使嵌入式系统应用得以飞速发展,而MISRA C是嵌 入式系统应用工程师对C语言嵌入式应用做出的贡献。如今MISRAC已经被越来越多的企业接受,成为用于嵌入式 系统的C语言...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页...

    -C++参考大全(第四版) (2010 年度畅销榜

    本书是根据著名C语言专家HerbertSchildt的著作翻译的。这是一本关于C++语言的百科全书,包括C和C++的命令、功能、编程和应用等方面的内容。全书分为五个部分:C++基础:C子集;C++的专有特征;标准函数库;标准C++...

    llvm编译器框架下clang编译器-易语言

    GCC系统庞大而笨重,因此,Apple决定从零开始写C、C++、Objective-C语言的前端Clang,以求完全替代掉GCC。 Clang于2007年开始开发,C编译器最早完成,在2009年的时候,Objective-C编译器已经完全可以用于生产环境,...

    深入理解C++11:C++11新特性解析与应用

    第2章讲解了在保证与C语言和旧版C++标准充分兼容的原则下增加的一些新特性;第3章讲解了具有广泛可用性、能与其他已有的或者新增的特性结合起来使用的、具有普适性的一些新特性;第4章讲解了C++11新标准对原有一些...

Global site tag (gtag.js) - Google Analytics