C语言的声明的优先级规则

C语言的声明的优先级规则如下:


A


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


B


优先级从高到低依次是:


 


B.1


声明中被括号括起来的那一部分


 


B.2


后缀操作符【圆括号 ()表示这是一个函数,方括号 []

表示这是一个数组】


 


B.3


前缀操作符【* 表示这是一个指向 ......的指针】


C


如果  const 或  volatile如 关键字的后面紧跟说明符

【如  int、 long等】,那么它作用于类型说明符。

在其他情况下, const和【或】 volatile关键字作用于它左边紧邻的指针星号。

时间: 2024-12-15 22:17:11

C语言的声明的优先级规则的相关文章

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

A 声明从它的名字开始读取,然后按照优先级顺序依次读取. B 优先级从高到低依次是:    B.1 声明中被括号括起来的那部分    B.2 后缀操作符:         括号()表示这是一个函数,而         方括号[]表示这是一个数组.    B.3 前缀操作符:星号*表示 "指向-的指针". C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符.在其他情况下,const和(或)volatile关键字作用于它左边

《C专家编程》第三章——分析C语言的声明

前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其次就是学习怎样对C语言的声明进行分析,另外本文将详细来探讨一个分析C语言声明的工具--cdecl,分析和编写它的源代码. C语言的声明晦涩难懂这一点应该是名不虚传的,比如说下面这个声明: void (*signal(int sig, void(*func) (int)))(int); 这可不是吓人的

《C专家编程》笔记(三)——分析C语言的声明

1. 几个C语言声明的分析 char (*j)[20]; j = (char(*)[20]) malloc(20); // j是指向数组的指针 const int * grape; int const * grape; int * const grape_jelly; const int * const grape_jam; int const * const grape_jam; char * const * (*next)(); // next是指向函数的指针,这个函数不接收参数,它的返回值

C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,<C专家编程>P64原文如下: 规则A规定了要按照优先级来解释声明(算是一句废话).规则C请参照本人上一篇笔记:http://www.cnblogs.com/deyuanqin/p/5705967.html.规则B的具体实践过程如下图: 本着抛砖引玉的目的,我们使用以上规则分析void (*signa

变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化

一.变量声明和变量赋值: if (!("a" in window)) { var a = 1; } alert(a);//a为? 你可能认为alert出来的结果是1,然后实际结果是"undefined".要了解为什么,我们需要知道JavaScript里的3个概念: 1.所有的全局变量都是window的属性,语句 var a = 1;等价于window.a = 1; 可以用如下方式来检测全局变量是否声明: "变量名称" in window 2.声明

C语言复杂声明

C语言复杂声明 First step int *f(); /* f:是一个函数,它返回一个指向int类型的指针*/ int (*pf)(); /* pf:是一个指向函数的指针,该函数返回一个int类型的对象*/ 说明:*是一个前缀运算符,其优先级低于() Deeper char **argv argv : pointer to pointer to char 指向char 类型的指针的指针 int (*daytab)[13] daytab:pointer to array[13] of int

c专家编程---优先级规则

对于一些复杂的类型组合,总是搞不明白,今天阅读了“优先级规则”这块,有了进一步的理解,特将规则记在此处,供自己学习查询使用. 优先级规则: A.声明从它的名字开始读取,然后按照优先级顺序依次读取 B.优先级从高到低依次是 B.1  声明中被括号括起来的部分 B.2  后缀操作符 括号()表示这是一个函数,而方括号[]表示这是一个数组 B.3  前缀操作符:星号*表示“指向...的指针” C.如果const和(或)volatile关键字后面紧跟类型说明符(如int .long等),那么它作用于类型

css声明的优先级

选择器的特殊性 选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,如0,0,0,0,0 一个选择器的具体特殊性如下确定 1.对于选择器给定的ID属性值,加0,1,0,0 2.对于选择器中给定的各个类属性,属性选择,或伪类,加0,0,1,0 3.对于选择器中给定的各个元素和伪元素,加0,0,0,1 4.通配符的选择器的特殊性为0,0,0,0 5.结合符对选择器特殊性没有一点贡献 6.内联声明的特殊性都是1,0,0,0 7.继承没有特殊性 特殊性1,0,0,0大于所有的以0开头的特殊性(

Android多语言支持以及各国语言Values文件夹命名规则

创建好的项目工程由于需求 需要做多国语言的支持  下面介绍怎么快捷的创建文件夹 建好一个android 的项目后,默认的res下面 有layout.values.drawable等目录 这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件. 首先我们点击添加Android Xml File按钮,在Resource Type中选择Values 在File中输入string.xml ,会出现下面的界面: 下面 以添加一个 英语(美国):values-en-