【问题标题】:Where can I find a good quick reference for learning C after years of C++?经过多年的 C++,我在哪里可以找到学习 C 的快速参考?
【发布时间】:2010-03-07 01:54:49
【问题描述】:

我最后一次专业使用 C 是在 1997 年 IIRC 左右。从那以后,我使用了很多 C++。现在,我发现我需要再次使用一些 C。

我确信的一件事是,我不能仅仅放弃明显的 C++ 特性(例如类)并期望一切正常。有各种不太明显的语法变化。我只是不记得它们是什么。

是否有一个很好的参考来再次进行转换,但返回到 C?如果它解释了 C99(及更高版本?)中的变化,那就更好了。

【问题讨论】:

    标签: c++ c c99


    【解决方案1】:

    正如 dirkgently 所暗示的那样,Harbison 和 Steele 是一个很好的参考,但我认为复习它并没有什么用处。为了重新训练你的思维,我有以下建议:

    1. 重读 Kernighan 和 Ritchie

    2. 可选:阅读 Peter van der Linden 的精彩 Expert C Programming: Deep C Secrets

    3. 别忘了图书馆!查看 P. J. Plauger 的书标准 C 库,或者直接转到 http://dinkumware.com/(Plauger 的公司)并浏览他们关于 C99 库的优秀文档。

    4. 标准 C 缺少数据结构库。幸运的是,有一个优秀的免费 3rd 方库填补了几个空白:Dave Hanson 的C Interfaces and Implementations

    【讨论】:

    • 范德林登推荐 +1。真是太好了。
    【解决方案2】:

    赫比森和斯蒂尔:C: A Reference Manual, Fifth Edition 可能对 C99 有帮助。此外,请阅读标准、open-std.org 上提供的论文。最后,您计划使用的编译器/工具链文档。后者将一切都放在了正确的位置——关于你需要重新学习多少。

    【讨论】:

    • 560 页对于“快速参考”来说似乎有点多。我不需要从头开始学习 C。我希望有几页主要问题的东西 - 基本上可以让我免于最初几个小时的咒骂,因为其他每一行代码都被证明是错误的。请注意,事实证明我再也没有一本 C 书了,所以那本书也许有意义。但它似乎还是有点大。至于标准——是的,我可能应该买一些。
    • 我认为您不需要阅读全部内容。手头有本书会有所帮助。
    【解决方案3】:

    还不够,但还是个不错的开端:C for C++ Programmers

    【讨论】:

    • 这看起来是一个很好的起点——但我很确定它不是最新的。例如,它告诉我不要对 cme​​ts 使用“//”——我确信这在 C 中现在是有效的。在不可用的功能列表中看到“>”让我感到震惊——直到我意识到这意味着流媒体,而不是位移。
    【解决方案4】:

    不是书,而是阅读 GTK+ 源代码。它可能很丑,但它有一些我读过的最好的 C 源代码。

    【讨论】:

    • 这将是一个很大的阅读 - 介意建议一两个特别有趣的文件?
    • 看看 GtkObject 是如何实现的以及闭包。
    【解决方案5】:

    C for Programmers,作者 Leendert Ammeraal,是迄今为止我在这些方面看到的最好的东西。不幸的是,它已经快 20 年了,很难找到,而且(显然)在 C99 上不是最新的。

    【讨论】:

    • 如果他遇到除了类和模板之外的其他东西,他可能没有使用 C99。例如,C++ 添加了内联函数、中间范围变量声明和单行 cmets,所有这些都被 C 采用,但没有被许多嵌入式 C 编译器采用。即使他部分时间使用 C99,他也会很高兴知道经典 C 中存在的陷阱。
    【解决方案6】:

    试试下面的链接,我觉得很好参考:

    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 程序员。祝一切顺利。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2010-09-15
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多