2022年C语言声明详解 .pdf





《2022年C语言声明详解 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言声明详解 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、人们常说, C 语言的声明太复杂了,的确,这也是C 语言饱受批评的地方之一。不过,笔者认为,真正要受到批评的不是语言本身,而是那些传播者。传播者们通常都有一个共识:讲述要由浅入深。作为原则,笔者并非要反对它,毕竟笔者对C 语言的学习,也经历了相同的过程。但是,由浅入深并不意味着一切从简,以偏盖全。计算机语言不同于数学理论(虽然它的确根植于数学,与数学密不可分),数学理论是一种循序渐进的过程,后面的理论以前面的理论为基础。但C 语言归根说底,就是一堆语言规则而已,应该让学习者一开始就全面且详细地了解它,而不是象现在某些教材所做的那样,只说一部分,不说另一部分,以为这就是由浅入深了,实际上这是以偏
2、盖全。语言如此,声明作为C 语言的一部分更是如此。我们最常见到的对声明的描述是这样的:存储类别类型限定词类型标识符这种说明会给人们一种暗示:C 语言的声明是静止的、死板的,什么声明都能够以这个为基础,往上一套就 OK 了。事实真的如此吗?说句心里话,笔者也祈祷事实真的如此,这样世界就简单多了、清静多了。但别忘了,这个世界总是让人事与愿违的。实际上,C 的声明的组织形式是以嵌套为基础的,是用嵌套声明组织起来的,并非象上面所述那么死板,存储类说明符一定得放在限定词前面吗?类型说明符一定要紧贴标识符吗?不!C 标准从来没有这样说过!下面来看一看C89 对声明的形式是如何规定的:声明:声明说明符初始化
3、声明符表 opt opt 的意思是 option,可选 其中声明说明符由以下三项构成:声明说明符:存储类说明符声明说明符 opt 类型说明符声明说明符 opt 类型限定符声明说明符 opt 在这里,一个声明说明符可以包含另一个声明说明符,这就是声明的嵌套,这种嵌套贯穿于整个声明之中,今天我们看来一个非常简单的声明,其实就是由多个声明嵌套组成的,例如:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - static const int
4、 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
5、;或者 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言声明详解 2022 语言 声明 详解

限制150内