C陷阱与缺陷

Andrew Koenig

出版时间

2003-11-30

ISBN

9787115106230

评分

★★★★★
书籍介绍

作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。<br>作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程

Andrew Koenig

AT&T公司Shannon实验室大规模编程研究部门成员,同时是C++标准委员会的项目编辑。他的编程经验超过30年,其中有15年在使用C++,他已经出版了超过150篇和C++有关的论文,并且在世界范围内就这个主题进行过多次演讲。

AI导读
核心看点
  • 剖析C语言词法、语法及语义中的常见陷阱
  • 揭示预处理器、链接及库函数使用的潜在缺陷
  • 提供避免边界错误及提高代码可移植性的建议
适合谁读
  • 希望深入理解C语言底层机制的进阶程序员
  • 从事C语言开发并追求代码健壮性的工程师
  • 对计算机编译原理及语言设计感兴趣的读者
读前提醒
  • 本书基于ANSI C标准前版本,部分知识可能过时
  • 内容简短精炼,适合作为案头书随时查阅参考
  • 建议结合现代C标准对照阅读,注意版本差异
读者共识
  • 经典必读,虽篇幅短小但极具参考价值
  • 排版质量较差,代码缩进混乱影响阅读体验
  • 部分知识点略显陈旧,但核心思想依然适用

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "许多系统中的标准输入/输出库都允许程序打开一个文件,同时进行写入和读出的操作:"
  • "上面的例子代码打开了文件名由变量file指定的文件,对于存取权限的设定表明程序希望对这个文件进行输入和输出操作。 编程者也许认为,程序一旦执行上述操作完毕,就可以自由地交错进行读出和写入的操作。遗憾的是,事实总难遂人所愿,为了保持与过去不能同时进行读写操作的程序的向下兼容性,一个输入操作不能随后直接紧跟一个输出操作,反之亦然。如果要同时进行输入和输出操作,必须在其中插入fseek函数的调用。"
  • "char *p, *q; p = "xyz"; 实际上,p的值是一个指向'x', 'y', 'z'和'\0' 4个字符组成的数组的起始元素的指针。"
  • ""另一种考虑不对称边界的方式是,把上界视作某序列中第一个被占用的元素,而把下界视作序列中第一个被释放的元素.""
  • "编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不可能组成一个有意义的符号。 “如果(编译器的)输入流截止至某个字符之前都已经被分解为一个个符号,那么下一个符号将包括从该字符之后可能组成一个符号的最长字符串、”"
  • "前面一段讨论了解决这个问题的两种方法, 实际上提示了我们避免“栏杆错误”的两个通用原则: (1) 首先考虑最简单情况下的特例,然后将得到的结果外推,这是原则一。 (2) 仔细计算边界,绝不掉以轻心,这是原则二。"
  • "C 语言中的一个重要思想就是分别编译(Separate Compilation),即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起。 典型的连接器把由编译器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体,该实体能够被操作系统直接执行。其中,某些目标模块是直接作为输入提供给连接器的;而另外一些目标模块则是根据连接过程的需要,从包括有类似 printf 函数的库文件中取得的。 连接器通常把目标模块看成是由一组外部对象(external object)组成的。每个外部对象代表者机器内存中的某个部分,并通过一个外部名称来识别。"
  • "两个具有相同名称的外部对象实际上代表的是同一个对象。 static 修饰符是一个能够减少此类命名冲突的有用工具。 ... a 的作用域限制在一个源文件内,对于其他源文件,a 是不可见的。因此,如果若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把它们需要用到的对象也都在同一个源文件中以 static 修饰符声明。"
目录
第零章 导读
第一章 词法“陷阱”
第二章 语法“陷阱”
第三章 语义“陷阱”
第四章 连接

显示全部
用户评论
经典必读书籍
我得买本第二版的去……
从西校区图书馆借来的,几经波折...
书不错,内容有点老
有几个小知识点以前没注意过,当再学习了。
技术书籍总赶不上技术的发展
内容较老, 但是有几个点是可以提醒自己的, 背后附有答案很贴心
2013-12-18 主题阅读:编程语言发展史
17年看的,大都是些自己已经知道的东西。
有电子版,中文,有目录
下载
收藏