- 0
- 0
- 约4.02千字
- 约 5页
- 2021-12-10 发布于福建
- 举报
人们常说, C 语言的声明太复杂了,的确,这也是 C 语言饱受批评的地方之一。不过,
笔者认为,真正要受到批评的不是语言本身,而是那些传播者。传播者们通常都有一个共识:
讲述要由浅入深。作为原则,笔者并非要反对它,毕竟笔者对 C 语言的学习,也经历了相同
的过程。但是,由浅入深并不意味着一切从简,以偏盖全。计算机语言不同于数学理论(虽
然它的确根植于数学,与数学密不可分) ,数学理论是一种循序渐进的过程,后面的理论以前
面的理论为基础。但 C 语言归根说底,就是一堆语言规则而已,应该让学习者一开始就全面
且详细地了解它,而不是象现在某些教材所做的那样,只说一部分,不说另一部分,以为这
就是由浅入深了,实际上这是以偏盖全。
语言如此,声明作为 C 语言的一部分更是如此。我们最常见到的对声明的描述是这样的:
存储类别 类型限定词 类型 标识符
这种说明会给人们一种暗示: C 语言的声明是静止的、死板的,什么声明都能够以这个为
基础,往上一套就 OK 了。事实真的如此吗?说句心里话,笔者也祈祷事实真的如此,这样世
界就简单多了、清静多了。但别忘了, 这个世界总是让人事与愿违的。 实际上, C 的声明的组
织形式是以嵌套为基础的,是用嵌套声明组织起来的,并非象上面所述那么死板,存储类说
明符一定得放在限定词前面吗?类型说明符一定要紧贴标识符吗?不! C 标准从来没有这样说
过!下面来看一看 C89 对声明的形式是如何规定的:
声明:
声明说明符 初始化声明符表 opt [opt 的意思是 option,可选 ]
其中声明说明符由以下三项构成:
声明说明符:
存储类说明符 声明说明符 opt
类型说明符 声明说明符 opt
类型限定符 声明说明符 opt
在这里, 一个声明说明符可以包含另一个声明说明符, 这就是声明的嵌套,这种嵌套贯穿
于整个声明之中,今天我们看来一个非常简单的声明,其实就是由多个声明嵌套组成的,例
如:
static const int i=10, j=20, k=30;
变量 i 前面就是声明说明符部分,有三个声明说明符: static const int,static 是一个存储类
说明符,它属于这种形式:
static 声明说明符
static 后面的声明说明符就是 const int,const 是一个类型限定符,这也是个嵌套,它是由
const 声明说明符
组成,最后的 int 是一个类型说明符,到这里已经没有嵌套了, int 就是最底的一层。对于
存储类说明符、 类型说明符和类型限定符的排列顺序, C 标准并没有规定其顺序, 谁嵌套谁都
可以。换言之,上面的声明可以写成 :
int static const i=10, j=20, k=30;或者 const int static i=10, j=20, k=30;
这无所谓,跟原声明是一样的。再举一个有趣的例子:
const int *p; 与 int const *p;
有些人会对后面一种形式感到困惑,因为他一直以来学习的都是那种死板的形式,因此他
无法理解为什么那个 const 可以放在 int 的后面。实际上对于标准来说,这是再正常不过的行
为了。
上面举的例子是变量的声明,函数的声明也同样道理,例如:
static const int func(void);
int main(void)
{
int static const (*p)(void);
p=func;
return 0;
}
const int static func(void)
{
return
您可能关注的文档
- C语言程序设计复习资料归类.pdf
- C语言初学者入门讲座输入输出(1)宣贯.pdf
- C语言堆栈入门——堆和栈的区别借鉴.pdf
- C语言选择题精选宣贯.pdf
- c语言栈队列链表算法代码实定义.pdf
- c语言栈队列链表算法代码实现整理.pdf
- C运算符大全与详解定义.pdf
- c中内嵌汇编归纳.pdf
- DCS工程设计技术与应用实例参考.pdf
- 在县委常委会2025年度民主生活会暨以案促改专题民主生活会上的总结讲话.docx
- 某镇领导班子2025年度民主生活会对照检查材料.docx
- 高级中学党政办公室主任2025年度述职述廉报告.docx
- 在镇“锤炼作风提效能,凝心聚力建新功”主题春训活动动员部署会上的讲话.docx
- 在2026年春季开学教职工会议上的讲话.docx
- 公司党支部2025年度组织生活会对照检查材料.docx
- 在树立和践行正确政绩观学习教育动员部署会议上的讲话.docx
- 专题党课:筑牢作风“防火墙” 展现司法新担当.docx
- 在树立和践行正确政绩观学习教育专题研讨会上的发言材料.docx
- 在公司2026年度党建暨党风廉政大会上的讲话.docx
- 在县委党的建设工作领导小组会议上关于开展树立和践行正确政绩观学习教育部署工作的讲话.docx
原创力文档

文档评论(0)