C专家编程

[美] Peter Vander Linde

出版时间

2002-12-01

ISBN

9787115106278

评分

★★★★★
书籍介绍
这书最勾人的地方不在技术,而在那些藏在代码背后的八卦:K&R 把'数组和指针等价'这句话活活拆印在两页上,坑了无数读者;Sun 内核有个'永远不会发生'的 Bug,偏偏让内存覆盖、让系统惊慌。作者像个爱讲冷笑话的老兵,把指针、const、链接这些硬骨头裹在趣闻里端出来。读者反复提起的正是这份'稀奇古怪的幽默'——它让枯燥的高级教程有了可读性。但争议也由此而生:有人嫌'专家'二字名不副实,有人吐槽翻译生硬。它适合那些已跨过入门、想真正理解 C '为什么这样'的程序员,不适合寻求速成手册的人。读它更像听前辈聊天,而非上课。
AI导读
核心看点
  • 深入剖析指针、数组与const等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!"
用户评论
月底我会写一份详细的读书笔记,敬请期待~虽然没人期待吧。。。哈哈~
书不错,但是讨厌这个专家2个字,入门书籍
这书太old school了……
力荐。不过在对体系结构和编译器有了一定了解后,这本书只不过是前两者的C表达
很好的C语言高级教程,文笔幽默
站在一个不同的角度,讲解C语言中常被忽略的特性,讲解很深入
这本书的作用是引发人们的思考,想要知道的更具体是不够的还是,但是作者角度是十分新颖的,也是够直白的,简直就是经典。
不多说
很久以前和那本《C语言的陷阱与缺陷》一正买来的,读了两遍都没太看懂。工作后看见一些软件工程师也在读这本书,一问,很多人也不是很懂。看来,大师就是大师。
已购.
下载
收藏