C陷阱与缺陷

出版社:人民邮电出版社
出版日期:2013-2
ISBN:9787115308597
作者:凯尼格
页数:147页

作者简介

《C陷阱与缺陷》中作者Andrew Koenig以1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验,创作了这本对C程序员具有珍贵价值的经典著作。写作《C陷阱与缺陷(英文版)》的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。全书分为 8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章的篇幅给出了若干具有实用价值的建议。

书籍目录

第0章 导读 第1章 词法“陷阱” 1.1 =不同于== 1.2 & 和 | 不同于&& 和 || 1.3 词法分析中的“贪心法” 1.4 整型常量 1.5 字符与字符串 第2章 语法“陷阱” 2.1 理解函数声明 2.2 运算符的优先级问题 2.3 注意作为语句结束标志的分号 2.4 switch语句 2.5 函数调用 2.6 “悬挂”else引发的问题 第3章 语义“陷阱” 3.1 指针与数组 3.2 非数组的指针 3.3 作为参数的数组声明 3.4 避免“举隅法” 3.5 空指针并非空字符串 3.6 边界计算与不对称边界 3.7 求值顺序 3.8 运算符 3.9 整数溢出 3.10 为函数main提供返回值 第4章 连接 4.1 什么是连接器 4.2 声明与定义 4.3 命名冲突与static修饰符 4.4 形参、实参与返回值 4.5 检查外部类型 4.6 头文件 第5章 库函数 5.1 返回整数的getchar函数 5.2 更新顺序文件 5.3 缓冲输出与内存分配 5.4 使用errno检测错误 5.5 库函数signal 第6章 预处理器 6.1 不能忽视宏定义中的空格 6.2 宏并不是函数 6.3 宏并不是语句 6.4 宏并不是类型定义 第7章 可移植性缺陷 7.1 应对C语言标准变更 7.2 标识符名称的限制 7.3 整数的大小 7.4 字符是有符号整数还是无符号整数 7.5 移位运算符 7.6 内存位置 7.7 除法运算时发生的截断 7.8 随机数的大小 7.9 大小写转换 7.10 首先释放,然后重新分配 7.11 可移植性问题的一个例子 第8章 建议与答案 8.1 建议 8.2 答案 附录 PRINTF,VARARGS与STDARG

编辑推荐

《C陷阱与缺陷(英文版)》是一本C语言经典著作,集作者多年实际工作经验之大成,帮助C程序员绕开经典陷阱和障碍。《C陷阱与缺陷(英文版)》适合有一定经验的C程序员阅读学习,即便你是C编程高手,本书也应该成为你的案头必备书籍。

内容概要

Andrew Koenig是AT&T大规模程序研发部(前贝尔实验室)成员。他从1986年开始从事C语言的研究,1977年加入贝尔实验室。他编写了一些早期的类库,并在1988年组织召开了第一个相当规模的C++会议。在ISO/ANSI C++委员会成立的1989年,他就加入了该委员会,并一直担任项目编辑。

名人推荐

《C陷阱与缺陷》所揭示的知识,至少能够帮助你减少C代码和初级C++代码中90%的Bug。——Francis Glassborow,ACCU主席有一本讲述C语言的书,自出版以来,历经14载,一直都被各个书评站点(或书评人)列入“重点推荐”的清单中。尤为夸张的是,14年来……我们居然发现它的内容没有丝毫的变更!对于技术书籍,我想其精确性与权威性也算是奇迹了吧。——王昕,《C陷阱与缺陷》中文版审校

章节摘录

版权页:   插图:   Every useful C program must use library functions because C does not have any input-output statements. The ANSI C standard recognizes this by defining a large collection of standard library routines that are expected to be made available by every C implementation.This collection is not complete.For example, virtually every C implementation has functions called read and write for doing "Iow-level" I/O, but these functions do not appear in the ANSI standard.Moreover, not all stan.dard functions are part of every C implementation - ANSI C is too new for that. Most library routines cause little trouble: they are straightforward enough that people seem to get them right most of the time.However, there are a few cases where some widely-used library functions behave in ways their users might not expect. In particular, programmers often seem to have trouble with the details of the printf family of functions and the varargs.h faality for writing functions with variable argument lists.The Appendix describes these two faalities, as well as the stdarg.h facility (the ANSI C version of varargs .h) in detail. Perhaps the best piece of advice about using library functions is to use system header files wherever possible. When the author of a library has provided a header file that accurately describes the functions in that library,it is just plain silly not to use it. This is especially important in ANSI C,where these headers include declarations of argument types as well as result types.In fact.there are some cases in ANSI C where use of system header files is required in order to be assured of getting the right result. The rest of this chapter explores some problems that programmers seem to have with a few common library functions. 5.1 getchar returns an integer Consider the following program: #include  main ( ) { char c; while((c = getchar())!= EOF) putchar (c); } The getchar function returns the next character from the standard input file, or EOF (a value, defined in stdio.h, which is distinct from any character) if there is no input left.Thus this program looks like it should copy its standard input to its standard output. In fact, it doesn't quite do this.


 C陷阱与缺陷下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     最近想读linux0.11源码,觉得C语言还要再学习。这本书写得非常通俗。比如,C编译器词法分析时采用贪心法解析,这样y=c/*p /*注释*/最终解释成y=c,类似于正则表达式的*,太妙了。又比如,C语言定义时,按使用时的方法解读;还比如,C语言赋值采用=,而比较是用==,原因是因为赋值用得频繁,所以要短些。妙妙。这番解读,真好。还比如,对定义数组时,如int a[10]其中a[10]是不可用的,因为C数据下标从0开始,其中的解释非常妙。总之,这本书写得非常棒!

精彩短评 (总计11条)

  •     看得英文版,传说的C语言三件套之一,一定要看,这样才能对C语言的理解更加深刻。
  •     印刷不是很好,不过我在购书中心看的印刷也跟这个是一样的,内容当然是好的
  •     好好学习天天向上。绝对值得拥有的一本书。
  •     排版不齐,有些纸页的文字布局是往右侧倾斜的。真想换货。而且字迹有些地方不清晰。
  •     纸的质量很差!内容很经典。
  •     字体不是很清晰,印刷质量差强人意
  •     C 四经之一。
  •     不愧是C语言经典,很棒的书
  •     印刷质量简直就像是复印的。还不如一般的盗版书。印刷太差了太差了!!!!
  •     绝对好书。中文版有了,又来买英文版。很多东西以前都不知道,也不知道危害,看过这本书之后对C语言中的很多问题理解加深了
  •     书肯定经典,值得一读。但是应该是发货的时候把书的前50页弄折了,有点不满意!
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024