c 语言的复杂声明

简化的声明语法:

dcl:     optional  *‘s  direct-dcl

direct-dcl:  name

        (dcl)

        direct-dcl()

        direct-dcl[optional size]

声明符 dcl 就是前面可能带有多个 * 的direct-dcl。direct-dcl 可以是name,由一对圆括号括起来的 dcl ,后面跟有一对圆括号的

direct-dcl,后面跟有用方括号括起来的表示可选长度的direct-dcl 。

实际处理声明符时可以从里向外,也可以从外向里。

从里向外,先找 direct-dcl ,按照 direct-dcl 处理。

从外向里,按照 dcl 处理。

时间: 2024-10-25 20:57:24

c 语言的复杂声明的相关文章

从C语言的变量声明到Objective-C中的Block语法转载]

原文:From C Declarators to Objective-C Blocks Syntax 作者:Nils Hayat 译者:CocoaChina--sunshine 在这篇文章中,从简单的C语言中各种声明开始,以及复杂的声明组合,到最后Objective-C中的代码块bokck的语法. 花一些时间去了解代码块(block)衍生和组织形式,一旦明白了这些,就可以很方便的声明和使用它,而不用每次需要的时候才去Google一下. 如果你想把能想到的东西用block声明表现出来,请继续阅读!

C语言中的声明与定义的区别

1.对于下面的声明语句 int a; 如果其位置出现在所有的函数体之外,那么它就被称为外部对象a的定义.这个语句说明了a是一个外部整型变量,同时为a分配了存储空间.因为外部对象a并没有被明确指定任何初始值,所以它的初始值默认为0(某些系统中的连接器对以其他语言编写的程序并不保证这一点,C编译器有责任以适当方式通知连接器,确保未指定初始值的外部变量初始化为0). 2.又如下面的声明语句: int a = 7; 在定义a的同时也为a明确指定了初始值.这个语句不仅为a分配内存,而且也说明了在该内存中应

生成跨语言的类型声明和接口绑定的工具(Djinni )

Djinni 是一个用来生成跨语言的类型声明和接口绑定的工具,主要用于 C++ 和 Java 以及 Objective-C 间的互通. 示例接口定义文件: 1 # Multi-line comments can be added here. This comment will be propagated 2 # to each generated definition. 3 my_enum = enum { 4 option1; 5 option2; 6 option3; 7 } 8 9 my_

C语言中标识符声明的几个关键字总结

C语言中声明一个名称就是把一个标识符与某个C语言对象相关联,如变量.函数或类型,C语言中可以声明的名称包括:变量.函数.类型.类型标志.结构成员与联合成员.枚举常量.语句标号和预处理器宏.除了语句标号和预处理器宏之外,所有标识符都在C语言声明中声明,变量.函数.类型放在声明的声明符中,类型标志.结构成员与联合成员和枚举常量在声明的某种类型说明符中声明,语句标号在C语言函数中出现时声明,而预处理器宏用#define预处理器命令声明. 如下列声明: extern const volatile uns

C语言的函数声明,定义,调用以及exit退出

1 #include <stdio.h> 2 #include <stdlib.h> 3 void singing(); 4 int main() 5 { 6 singing(); 7 system("pause"); 8 } 9 10 void singing() 11 { 12 printf("after party~after party~我已然赶不上地铁\n"); 13 } 上述代码段是一个C语言函数的声明过程,首先要声明一个函数(第

c语言----结构体--声明及定义

试着写点东西,主要为了巩固学习过的东西. 结构体?C语言中的结构体主要用来表达.定义一些自己想要的类型,例如日期,身份信息等等. 日期:2017-09-10 身份信息:姓名fakke,年龄23,身高180: 可以通过struct来实现.(个人感觉有点像python的字典) 定义的方式: 第一步:声明结构类型: struct   类型名字{ 变量类型1   变量名: 变量类型2  变量名: ... 变量类型3  变量名: }: 第二步:  2定义新的变量 struct date 变量名; 第三步:

C语言中函数声明实现的位置

在学习C语言的时候我遇到了这么个事情,因为之前先学习的C#,在C#编译器中,函数的声明位置不会影响编译的结果,但是在C语言中却发生了错误 先看一段代码: #include <stdio.h> int main() { fun1(); fun1(); fun1(); fun2(); return 0; } /*方法1.用于输出消息1*/ void fun1() { printf("For he's a jolly good fellow!\n"); } /*方法2,用于输出消

C语言结构体声明中冒号的使用(占位符) &amp; C结构体的乱序初始化

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为"位域"或"位段".所谓"位域"是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数.每个域有一个域名,允许在程序中按域名进行操作.这样就可以把几个不同的对象用一个字节的二进制位域来表示.一.位 域的定义和位域变量的说明位域定义与

C语言函数的声明

#include <stdio.h> //函数声明 //声明方法一 //int sum(int v1, int v2); //函数声明是可以重复定义 //只有函数的声明,没有函数的实现在编译的时候是没有问题的 //编译器只会检查语法错误,链接的时候才会去查看函数是否真的实现了 //声明方法二 int sum(int, int); int sum(int, int); int sum(int, int); int sum(int, int); int main() { printf("

10-黑马程序员------C 语言学习笔记--- C语言函数的声明和原型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 三 函数的声明和原型 01 在函数调用之前,应该对所调用函数进行声明,指出该函数的返回值类型及形参的个数和类型. 函数声明的一般格式: 函数返回值类型 函数名(形参类型1 形参名1,………………); *函数声明的位置,一种是在主