- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于C语言声明、指针、数组、函数、typedef等等的一通“超级扯”按:在CSDN论坛上,有坛友这样提议:typedef int (*PF)();应该被写作:typedef int (*)() PF;才是“严谨”、“合乎逻辑”的。对此,我来说说吧……typedef 关键字的意思是“关于类型的定义”。为什么要有“类型”这个观念?我们都知道,在计算机的内部,一切数据和功能性代码(比如函数、命令、指令等)都是以0、1组成的有序排列来进行存储和运算等处理的。所以,我们总是会这麽说:“计算机只认得‘二进制’”。在C编程语境中,当我们写下:int a;的时候,实际上是在告诉编译器这位老Boss:请您为我的程序在存储器中预留一块地方,这块地方不论将来会存储什么样的东东,您一律把那些东东视作“整数”来处理。老Boss根据自己所在的计算机架构或操作系统环境,确定1个“整数”需要在存储器里面占有多大的地盘。而我们经常使用的架构或环境,决定了,这块地盘的大小,通常是4Bytes即32bits。而“a”这个符号,是我们的程序用来称呼那块地盘的代号。也就是说,在我们的程序中,将来凡是用到了“a”这个符号,就是在告诉老Boss:我是让您在那块地盘上做些什么,如读取那里的数据(当a作为右值),或向那里刷入什么数据(当a作为左值)。当然,这所有的处理,均是把那块地盘上既有的数据或将要刷入的数据,作为“整数”来看待。以上这一切,就叫做“定义性声明(defining declaration)”,我们可以根据不致引起歧义的某种习惯,简称它为“定义”或“声明”。(严格地说,变量的定义与声明,两个概念之间,有一些微妙的联系与区别,在此不再赘述。)C语言采用了不同于其他语言的规则,来让程序员进行这种声明工作。作为比较,我们可以观察在Ada语言中,类似的工作,是如何进行的:a:integer;就这个简单的例子看来,我们除了看到Ada语言似乎利用了一种更加接近人类语言习惯的规则(语序以及冒号)之外,与C还是大同小异的,但是,后面所讲到的例子,就会把这种特性上的差异,扩大地展现出来。此外,我们也不难意识到,C的这个规则,会跟基于对象(Object-Based)的某些思路,有一些“暗合”的地方,比如说:当我们利用class SomeClass{... ...};来定义一个类之后,我们可以利用SomeClass AnObject;来将SomeClass这个类实例化出来一个具体的对象,即 AnObject。我们已经了解到,SomeClass其实是对AnObject与其他具有相同“结构”的实例们的一种抽象。那么,我们可以反过来推:int a;就可以用“变量a其实是int这个‘类’的一个实例化”这样的思路,来揣度(仅仅是一种类比性思维)C语言中声明变量的这件事情。以上这些,都是比较容易理解的。但是C语言不会就这麽轻易地放过我们。在C语言编程语境中,把一个“符号”的“类型”或“性质”表达出来,有远比“类型名 变量名”更为复杂的方式。比如:char a[n];在这个例子中,引入了方括号。围绕符号“a”的事情就复杂了一层。方括号紧跟在符号“a”的右边,说明符号“a”是用来称呼一段连续分布在存储器中的多个数据,俗称“数组”。而这一段数据中的单位数据,即每个元素的“类型”是char,且所有元素均被视为char类型,概莫能外!“类型名 变量名”的简单做法,已经失效了。在C中,我们不能用char array a;或array_of_char a;这样的写法来声明一个元素均为char类型的数组。但是,在Ada语言的规则里,就可以这麽写:a : array (1..n) of Integer;在C语言的“侄子”——Perl语言中,用“@”来声明一个数组:@a=(value_alpha..value_omega);而在C语言中,即没有array关键字,也没有用来声明数组的@符号,甚至C语言本身都不会对数组元素的下标是否越界做出令程序员知晓正误的判断 —— 这一切,不得不让我狗胆包天地,下了这个狂妄的断言:“在C语言中,压根儿就没有‘数组’这个东东!”(哎哟——一只鞋子袭来!)不那么狂了,把话说回来:在C语言中,通过引入方括号,来声明一个数组。注意,这个方括号对,与用“数组名[下标]”的写法来指明具体某个元素这种方法里的方括号对,是完全不同的。在指明(术语叫“引用”)数组中某个元素的时候,也是用方括号对。这里的方括号对,叫做“取下标操作符”。其实“取下标操作符”是一种被包装起来的指针运算符,即一种存储器上的偏移量运算,所以,我们可以大胆猜测:在C语
您可能关注的文档
最近下载
- 机房接地电阻测试记录.doc VIP
- 获得性血友病A诊断与治疗中国指南(2021年版).pdf VIP
- 2025年天津武清中考语文试题及答案.doc VIP
- H13钢的高温拉伸性能研究.pdf VIP
- 04D201-3室外变压器安装图集.pdf VIP
- Agentic RAG 的现在与未来.pdf VIP
- T_ZZB 3718—2024(纸质卡牌_标准).pdf VIP
- 建筑材料行业研究简报:华东水泥创新高,巨石业绩持续高增长.pdf VIP
- 东风风神-AX4-产品使用说明书-风神AX4 2017款 1.4T DCT潮尚型-DFM7141F3B-AX4使用手册201710.pdf VIP
- 工程设计项目拟投入设计人员及设备.docx VIP
文档评论(0)