Expert C Programming

Peter van der Linden

出版社

Prentice Hall

出版时间

1994-06-23

ISBN

9780131774292

评分

★★★★★
书籍介绍
这不是一本教你怎么写C的书,而是一本带你'考古'C语言的书。作者Peter van der Linden本身是编译器开发者,他把那些让人抓狂的细节——const到底修饰谁、数组和指针为何常被混为一谈、为什么'数组就是地址、指针就是地址的地址'——一一追溯到标准制定时的历史成因。读者最津津乐道的,正是这种'八卦'式的讲法:那些看似怪异的规定,其实是当年妥协与笔误的产物(比如K&R第二版把一句关键说明活生生拆到了两页)。读完你会获得一种'原来如此'的通透感,而非又一份语法速查表。它适合已具备C基础、渴望理解'为什么这么规定'的程序员;若你只想要技巧清单,或许会觉得它太'摇滚'。
AI导读
核心看点
  • 深入解析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 中都已经涉及到了… 而且这本书过时得有点厉害。
求书
收藏