付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑C语言声明学习之篇-基础电子作者:杨硕,华清远见嵌入式学院讲师。C语言的设计哲学要求对象的声明形式和它的使用形式尽可能相似,比如一个int类型的指针数组被声明为int*p[3];并以*p[i]这样的表达式引用或者使用指针所指向的int数据,所以它的声明形式和使用形式非常相似。这样做的好处是各种不同操作符的优先级在“声明”和“使用”时是一样的,而缺点恰好在与C语言的操作符的优先级过于复杂(有15级或者更多,取决于你怎么算),这是C语言设计不当、过于复杂之处。
实际上有些关键字只能出现在声明中,而不是使用中,比如volatile和const等,这使得声明形式和使用形式能完全对的上号的例子越来越少了。如果想要把什么东西强制转换为指向数组的指针,就不得不使用下面的语句来表示这个强制类型转换:
———char(*j)[20];
———j=(char(*)[20])malloc(20);
这个强制类型转换看上去很滑稽,星号两边的括号看上去可有可无,但是如果去掉就会变成非法语句。
涉及指针和const得声明可能会有下面几种不同的组合:
———constint*p;
———intconst*p;
———int*constp;
前两种情况,指针所指向的对象是只读的,而一种情况下指针是只读的。
如果我们想让对象和指针都是只读的,那么下面两种声明都能做到这一点:
———constint*constp;
———intconst*constp;
经过初级篇、中级篇一直到前面的学习我们发现其实分析一个声明就是按照操作符优先级规则把声明分解开来,分别解释各个组成部分。要理解一个声明,必须要懂得其中的优先级规则,下面是《C编程》中总结的C语言声明的优先级规则:
A声明从它的名字开始读取,然后按照优先级顺序依次读取;
B优先级从高到低依次是:
B.1声明中被括号括起来的那部分;
B.2后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组;
B.3前缀操作符:星号*标识“指向……的指针”;
C如果const和(或者)volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符,在其他情况下,const和(或)volatile关键字作用于它左边紧邻的指针星号。
现在,让我们用优先级规则来分析C语言的一个较复杂的声明:
———char*const*(*next)();
B.1(*next)——next为一个指向……的指针
B.2(*next)()——next是一个函数指针
B.3*(*next)()——next是一个函数指针,这个函数返回一个指向……的指针
Cchar*const——指向字符类型的常量指针
故char*const*(*next)();的含义就是:next是一个函数指针,这个函数返回一个指向字符类型的常量指针。
我想到现在我们是不是发现分析C语言声明其实并不像一开始那么令人感到无比痛苦,它反而给我们带来了乐趣,不是吗?其实我们只要多分析几个实例,多读一些高质量的C代码,那么分析一个C语言声明不再是一件可怕的事情(更何况我们还有cde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 镁精炼工岗中岗位晋升考核试卷含答案
- 医学课件-环状梗死名词解释
- 中医外科皮肤科常用药物
- 石河子大学药学院简介
- 安徽省安庆市一中2026-2027年高三上9月月考思想政治试卷(含答案)
- 皮肤科护理操作规范与注意事项
- crrt适应症与禁忌症课件
- 2026高中物理教资面试答辩题库及答案
- 第8课-经济体制改革
- 2025年执业医师内科执业范围
- 新闻宣传写作培训课件
- 广东省2025年1月自学考试10177设计基础试题答案及评分参考
- 2025年教师资格考试高级中学学科知识与教学能力信息技术试题及答案
- 源远流长话云南
- 保安培训知识资料大全课件
- 应急救灾物资项目方案投标文件(技术方案)
- 浙教版(2024)科学七年级上册 生物体的基本单位 课件
- 医院三合理培训课件
- 《机械创新设计》课件-k第四章 创新技法
- 应急管理十二讲-钟开斌
- 游艇租赁合同协议书范本
评论
0/150
提交评论