Expert C Programming

Peter van der Linden

出版社

Prentice Hall

出版时间

1994-06-23

ISBN

9780131774292

评分

★★★★★
书籍介绍

For software engineers and computer programmers who are writing, developing, testing, debugging software on either IBM PCs or Unix systems. Written for experienced C programmers who want to quickly pick up some of the insights and techniques of experts and master the fine arts of ANSI C, this volume passes on the wisdom of a highly experienced C compiler writer and his colleagues to help programmers reach new heights, and avoid common software pitfalls along the way. Using an original approach and a humorous style that makes deep knowledge both easy and accessible, it gathers into one place, tips, hints, shortcuts, guidelines, ideas, idioms, heuristics, tools, anecdotes, C folklore, and techniques that are often penciled in margins and on backs of papers by those working in the programming trenches-working on many different kinds of projects, over many, many years.

AI导读
核心看点
  • 深入解析C语言底层机制,如指针与数组区别
  • 揭示编译器工作原理及常见陷阱的成因
  • 以幽默风趣风格讲述C语言设计与历史
适合谁读
  • 具备C语言基础,希望进阶的程序员
  • 对计算机底层原理感兴趣的开发者
  • 准备C语言面试或深入理解标准者
读前提醒
  • 需先掌握C语言基础语法再阅读此书
  • 注意区分原版与译本质量差异
  • 结合代码实践理解书中抽象概念
读者共识
  • 内容深刻且风格幽默,阅读体验极佳
  • 澄清了许多长期存在的C语言误区
  • 虽绝版但仍是C程序员必读经典

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

精彩摘录
  • "char* s 与 const char* p 相容,char **s 与 const char** p却不相容? 要使上述的赋值合法,必须满足下列条件之一: 1. 两个操作数都是指向有限定符或者无限定符的相容类型的指针; 2. 左边指针所指向的类型必须具有右边指针指向类型的全部限定符; const限定符是修饰指针所指向的类似,而不是指针本身。 类似地,cost char**也是一个没有限定符的指针类型。它的类型是“指向有const限定符的char类型的指针 的指针”"
  • "const最有用的用法就是用它限定函数的形参,这样该函数将不会修改实参指针所指的数据,但其它函数却可能会修改它。"
  • "当内核检测到“不会出现”的情况时,他就会“惊慌失措”,引起突然停止。…… 为解决内核的“惊慌”问题,首先必须考虑有哪些事情有可能吓坏操作系统。 Sun 的内核开发小组有一个很隐蔽的 Bug,非常难以发现。其症状是内核的内存偶尔会被覆盖,这会使操作系统“惊慌”。"
  • "对编译器而言,一个数组就是一个地址,一个指针就是一个地址的地址。你应该根据情况做出选择。 …… 为什么人们会错误地认为数组和指针是可以完全互换的呢?这是因为他们阅读了标准的参考文献! The C Programming Language,第二版,Kernihan & Ritchie,第 99 页的底部是: As format parameters in a function definition, 然后翻到第 100 页,紧接前句: char s[]; and char s*; are equivalent... 呜呼!真是不幸,这么重要的一句话竟然在 K&R 第二版中被分印在了两页上!人们在"
  • "const float *类型并不是一个具有限定符的类型——它的类型是“指向一个具有const限定符的float类型的指针”,也就是说const限定符是修饰指针所指向的类型,而不是指针本身。"
  • "关键字const并不能把变量变成常量!在一个符号前加上cosnt限定符只是表示这个符号不能被赋值。也就是它的值对于这个符号来说是只读的。"
  • "static: 在函数内部,表示该变量的值在各个调用间一直保持延续性。 在函数这一级,表示该函数只对文件可见。 注:你可能会奇怪static的意义会相差如此之大,如果你知道原因,也请告诉我一声。(笔记者注:这句比较搞笑。)"
  • "chapter 2: It's not a bug,it's a language feature!"
用户评论
主要討論了指針和數組,其他部份也可以看看,還不錯
C语言面试必备。
文艺的文风,犀利的八卦。
没有传说中那么号
实在太摇滚
先读了第一章。
A, B, C, bricks for C++
要是能把废话 cut 掉的话,应该能上五星
2013年读到今天,我没资格评价这本书
读完 CSAPP 后再读这本发现很多知识在 CSAPP 中都已经涉及到了… 而且这本书过时得有点厉害。
收藏