《莱昂氏UNIX源代码分析(四)》青少年教育文学精选.pdfVIP

《莱昂氏UNIX源代码分析(四)》青少年教育文学精选.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载 第3章 阅读“C ”程序 学习阅读用“C ”语言编写的程序是必须的,否则就无法阅读 U N I X 的源代码。 与自然语言相类似,读比写要容易一些。即使如此,你仍然需要非常细心地学习那些巧 妙之处。 与“C ”语言直接相关的“U N I X文献”有两种,它们是: 《C参考手册》,作者是丹尼斯·里奇 《C语言程序设计导引》,作者是布里安·柯林汉 从现在开始,你就应当阅读这些文献,并且要尽可能一次又一次地反复阅读它们,这样 才会愈来愈深入地了解 C语言。 学习U N I X源代码并不要求你能够编写“ C ”程序。但是,如果有机会,那么你应当至少 编写一些小的C语言程序。这是一种学习程序设计语言的良好方法,使用这种方法你会较快地 理解如何正确使用下列的“ C ”语言组成部分: 分号; “=”和“==”; “{”和“}”; “++”和“--”; 说明; 寄存器变量; “i f ”和“f o r ”语句; 等等 你将发现“C ”是一种在存取和处理数据结构和字符串方面非常方便的语言,而这种操作 占了操作系统相当大的部分。作为一种面向终端的要求简明而紧凑表达式的语言,“C ”使用 一种大字符集,并且使很多符号,例如“ * ”、“ ”等得到很频繁的使用。在这方面“ C ”语 言可与A P L相比。 “C ”语言的很多特征令人想到 P L / 1 ,但“C ”在结构化程序设计方面提供的设施比 P L / 1 要强得多。 3.1 某些选出的例子 下面的例子都直接选自U N I X源代码。 3.2 例1 最简单的过程并不做任何实际工作,在源代码中这种过程出现了两次,它们是“ n u l l s y s ” 第3章 阅读“C”程序 223 下载 ( 2 8 6 4 )和“n u l l d e v ”( 6 5 7 7 ) 。 其中并没有任何参数,但是一对园括号“ ( ”和“)仍旧是需要的。一对花括号“{”和“}”界 定了过程体,在本例中过程体为空。 3.3 例2 下面一个例子内容稍多一些: 其中增加了一条赋值语句。该语句用一分号终止,它是语句的组成部分,而非 A l g o l类语言中 的语句分隔符。 “E N O D E V ”是一个定义的符号,在实际编译之前由编译程序的预处理器将这种符号代换 成一个与其相结合的字符串。 E N O D E V在0 4 8 4行被定义为 1 9。U N I X与此相关的惯例是:定 义符号由大写字符组成,而其他符号则使用小写字符。 “=”是赋值算符,“u . u_ e r r o r ”是结构“u ”的一个元素(参见0 4 1 9行) 。注意,“. ”算符 用于从一个结构中选出一个元素。该元素名是“ u_ e r r o r ”。在U N I X 中,结构元素命名通常都 用这种方式 —开头是一个区分符,然后是一个下划符,最后是一个名字。 3.4 例3 此过程的功能非常简单:它将指定的字数从一组连续单元复制到另一组连续单元。 此过程有3个参数。第2行 int *from,*to; 说明前两个变量是指向整型的指针。因为对第三个参数没有进行说明,按系统默认这是整型。 三个局部变量a 、b和c被指定为寄存器型。寄存器易于存取,引用它们的目标码也比较短。 a和b是指向整型的指针,而c是一个整型。寄存器型说明也可写成为: register int *a,*b,c; 224 下篇 莱昂氏UNIX源代码分析 下载 这强调了寄存器型与整型的关连。 对以“d o ”开始的3行语句应当仔细观察。如果“ b ”是指向整型的指针,那么: * b 表示被指向的整型数。于是,为了将“ a ”所指向的值复制到b所指向的单元,我们可使用下 面的语句: * b = * a ; 如果我们将此写成:

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档