我最后一次专业使用 C 是在 1997 IIRC 左右。从那以后,我使用了很多 C++。现在,我发现我需要再次使用一些 C。
我确信的一件事是,我不能仅仅放弃明显的 C++ 特性(例如类)并期望一切正常。有各种不太明显的语法变化。我只是不记得它们是什么。
是否有一个很好的参考来再次进行过渡,但返回到 C?如果它解释了 C99(以及更高版本?)中的变化,那就更好了。
正如 dirkgently 建议的那样,Harbison 和 Steele 是一个很好的参考,但我觉得复习起来没有用。为了重新训练你的思想,我有以下建议:
重读 Kernighan 和 Ritchie
可选:阅读 Peter van der Linden 的精湛的Expert C Programming: Deep C Secrets。
不要忘记图书馆!查看 PJ Plauger 的书The Standard C Library,或者直接访问http://dinkumware.com/(Plauger的公司)并浏览他们关于 C99 库的优秀文档。
标准 C 缺乏数据结构库。幸运的是,有一个优秀的、免费的第 3 方库填补了几个空白:Dave Hanson 的C 接口和实现。
Herbison 和 Steele:C:参考手册,第五版可能对 C99 有所帮助。此外,请阅读标准、open-std.org 上提供的论文。最后,您计划使用的编译器/工具链文档。后者把一切都放在了正确的角度——关于你需要重新学习多少。
还不够,但还是一个好的入门:C ++程序员的 C
不是一本书,而是阅读 GTK+ 源代码。它可能很丑,但它有一些我读过的最好的 C 源代码。
Leendert Ammeraal 的C for Programmers是迄今为止我在这些方面看到的最好的东西。不幸的是,它已经快 20 年了,很难找到,而且(显然)在 C99 上不是最新的。
试试下面的链接,我发现它很适合参考:
http://www.techbooksforfree.com/ccpp.shtml
此外,Sarafi Books 或 Books24x7(您可以使用 ACM 或 IEEE 会员资格访问两者)是技术书籍的极好参考。
此外,没有什么能打败 K&R:
http://www.amazon.com/exec/obidos/ASIN/0131103628
http://www.amazon.com/exec/obidos/ASIN/013089592X
我认为以上内容应该给你足够的阅读材料,可以持续几个星期,你会成为一个有成就的 C 程序员。祝一切顺利。:-)