我应该去哪里找到C编程参考资料?

4

我在哪里可以找到列出内置函数声明的C编程参考资料?


3
我最喜欢的是《C语言参考手册》(Harbison & Steele著)。 - Thomas Matthews
5
C语言中没有“内置”函数 - 有的是C标准库的一部分函数。 - anon
man页面通常存在于C库函数中。 - Paul
9个回答

10

3
如果你是一名C语言程序员,那么你真的必须拥有这本书。如果你没有这本书,那么你就不是真正的C语言程序员。 - anon
这本书的附录中提到的参考资料不是非常完整,但相当全面。此外,您还将获得有史以来编写最好的(关于C语言)之一的书籍,您可以用来查找特定的内容。我给个赞。 - Dave O.

4
您可以购买 ISO C 标准(草案可免费获取),或者购买 Harbison 和 Steele 的 C: A Reference Manual,这两本书都非常好。P.J. Plauger 的 The Standard C Library 是一本关于实现标准 C 库的好书。以上所有书籍都包含了标准函数的原型。

大多数ISO文件都充满了法律术语。我永远不会建议将它们作为一般参考。 - Earlz
我发现在大多数地方,ISO C标准都很容易阅读。不过总的来说,我同意你的评论。 - Alok Singhal
1
从长远来看,你应该能够阅读标准。不管是法律用语还是其他,它都告诉了你C程序的行为方式。对于初学者来说不是必要的,无论如何,我很少使用标准来查找标准库函数的签名,正如提问者所指定的那样。opengroup.org上的POSIX规范更快。 - Steve Jessop

1

如果你还没有,去读一下K&R这本书。

此外,这个页面看起来可能是一个不错的起点。


1
我一直觉得这个网站对于C编程非常有用; CPlusPlus
尽管标题和网站都是关于C++的,但它也有一个C参考部分,包含大量示例。

1

我读了《C程序设计语言》(Gottfred)。这是一个很好的编程入门书。


0

-1

这里有一份最佳书籍列表。选择最适合你需求的那本。

《C++旅程》(Bjarne Stroustrup) 这本书是一个快速教程概述,大约180页和14章节,介绍了标准C++(语言和标准库,并使用C++11)的中高级内容,适合已经了解C++或至少有经验的程序员。这本书是《C++程序设计语言》第4版第2-5章的扩展版本。

《C++程序设计语言》(Bjarne Stroustrup) (更新为C++11) 这是C++之父所写的经典入门书籍。与经典的K&R并行编写,它的阅读体验非常相似,涵盖了从核心语言到标准库、编程范式以及语言哲学等方面的所有内容。(因此,最新版本突破了1000页的限制。)[评论]第四版(于2013年5月19日发布)覆盖了C++11。

《C++标准库教程与参考》(Nicolai Josuttis) (更新为C++11) 这是C++标准库的介绍和参考书籍。第二版(于2012年4月9日发布)覆盖了C++11。[评论]

C++ IO流和区域设置(Angelika Langer和Klaus Kreft)这本书几乎没有什么好说的,除了如果你想了解有关流和区域设置的任何信息,那么这是找到明确答案的唯一地方。【评论】

C++11参考资料:

C++标准(INCITS/ISO/IEC 14882-2011)当然,这是所有C++的最终裁决者。但请注意,它仅旨在为愿意花费大量时间和精力来理解的经验丰富的用户提供参考。通常情况下,第一版发布的价格相当昂贵(300美元以上),但现在已以电子形式发布,售价60美元。

新C++(C++11/14)概述(仅PDF)(Scott Meyers)(更新为C++1y/C++14)这些是由Scott Meyers提供的为期三天的培训课程的演示材料(幻灯片和一些讲义)。他是一位备受尊敬的C++作者。尽管项目列表很短,但质量很高。

初学者

入门级

如果您是编程新手或者您有其他语言的经验并且是C++新手,强烈推荐这些书籍。

C++ Primer * (Stanley Lippman, Josée Lajoie, and Barbara E. Moo)(更新至C++11)共计1000页,是一本非常全面的C++入门教材,以易于理解和详细的方式涵盖了语言中几乎所有内容。第五版(2012年8月16日发布)覆盖了C++11。【评论】

Accelerated C++ (Andrew Koenig和Barbara Moo)基本上与C++ Primer涵盖相同的内容,但只占其四分之一的篇幅。这主要是因为它不试图成为编程的入门教材,而是针对那些之前已经使用其他语言进行过编程的人们提供的C++入门教材。它有一个更陡峭的学习曲线,但对于那些能够应对的人来说,它是一本非常紧凑的语言入门教材。(历史上,它通过使用现代方法教授语言成为第一本初学者书籍。)【评论】

Thinking in C++ (Bruce Eckel)两卷本;第二卷更多地关注标准库,但仍然非常好。

编程:使用C++的原理和实践(Bjarne Stroustrup)这是一本由C++语言创始人所写的介绍C++编程的书籍。它不仅适合初学者,而且对于有经验的程序员也很有帮助。(第二版已更新至C++11)

  • 请勿将其与《C++ Primer Plus》(Stephen Prata)混淆,后者评价较差。

最佳实践

Effective C++(Scott Meyers)这本书旨在成为C++程序员应该阅读的最佳第二本书,并且它成功了。早期版本面向从C语言转来的程序员,第三版则针对从Java等语言转来的程序员。它以非常易于记忆的50个经验法则及其解释为特色,风格非常易懂(且有趣)。[评论]

Effective STL(Scott Meyers)这本书的目标是像Effective C++一样,针对STL中的标准库部分提供经验法则及其解释。[评论]

中级

More Effective C++(Scott Meyers)比Effective C++提供更多的经验法则。虽然不如第一本书重要,但仍然值得一读。

《深入探索C++对象模型》(Herb Sutter)以一系列难题的形式呈现,全面讨论了通过资源获取即初始化(RAII)实现C++中适当的资源管理和异常安全性,此外还深入涵盖了其他各种主题,包括pimpl惯用法、名称查找、良好的类设计以及C++内存模型。【评论】

《更深入探索C++对象模型》(Herb Sutter)涵盖了Exceptional C++未涉及的其他异常安全性主题,此外还讨论了在C++中有效的面向对象编程和正确使用STL。【评论】

《深入探索C++对象模型风格》(Herb Sutter)讨论了泛型编程、优化和资源管理;此书还对如何通过使用非成员函数和单一职责原则在C++中编写模块化代码进行了精彩阐述。【评论】

《C++编码规范》(Herb Sutter和Andrei Alexandrescu)这里的“编码规范”并不意味着“我应该缩进多少个空格?”本书包含101个最佳实践、惯用法和常见陷阱,可以帮助您编写正确、易懂和高效的C++代码。【评论】

C++模板:完全指南(David Vandevoorde和Nicolai M. Josuttis)这是关于C++11之前的模板的书籍。它涵盖了从基础知识到一些最高级的模板元编程,解释了模板如何工作的每个细节(概念上和实现上),并讨论了许多常见的陷阱。在附录中有关于“一个定义规则”(ODR)和重载决议的优秀总结。第二版计划于2015年出版。【评论】

高级

现代C++设计(Andrei Alexandrescu)一本关于高级通用编程技术的开创性书籍。介绍了基于策略的设计、类型列表和基本的通用编程习惯,然后解释了如何使用通用编程以有效、模块化和清晰的方式实现许多有用的设计模式(包括小对象分配器、函数对象、工厂、访问者和多方法)。【评论】

C++模板元编程(David Abrahams和Aleksey Gurtovoy)

C++并发实战(Anthony Williams)一本涵盖C++11并发支持的书籍,包括线程库、原子库、C++内存模型、锁和互斥体,以及设计和调试多线程应用程序的问题。

高级C++元编程(Davide Di Gennaro)是一本关于TMP技术的C++11之前的手册,更注重实践而非理论。这本书中有大量的片段,其中一些已经被类型特征所取代,但这些技术仍然值得了解。如果你能忍受奇怪的格式和编辑,那么它比Alexandrescu的书更容易阅读,也更有价值。对于更有经验的开发人员来说,你可能会在C++的某个黑暗角落(一个怪癖)中学到一些只有通过广泛的经验才能获得的知识。

经典/旧版

注意:这些书中包含的一些信息可能已经过时或不再被认为是最佳实践。

C++的设计与演化(Bjarne Stroustrup)如果你想知道语言为什么是这样的,那么这本书就是你找答案的地方。这本书涵盖了C++标准化之前的所有内容。

C++沉思录 - (Andrew Koenig和Barbara Moo)[评论]

高级C++编程风格与惯用法(James Coplien)这是模式运动的前身,描述了许多特定于C++的“惯用法”。如果你有时间,它肯定是一本非常好的书,仍然值得一读,但相当古老,不符合当前C++的最新发展。

大规模C++软件设计(John Lakos)Lakos解释了管理非常大的C++软件项目的技术。如果只是更新到最新版本就更好了。它是在C++98之前写的,缺少许多对大型项目重要的功能(例如命名空间)。如果你需要在一个大型C++软件项目中工作,你可能想阅读它,尽管你需要对它持有怀疑态度。多年来一直有传言说Lakos正在撰写一本最新版的书。

C++对象模型内幕(Stanley Lippman)如果你想知道虚成员函数通常如何实现以及在多重继承场景中基对象通常如何布局在内存中,以及所有这些如何影响性能,那么你将在这里找到关于这些主题的深入讨论。


问题是关于C语言,而不是C++。 - Greg A. Woods
问题是关于C语言,而不是C++。 - undefined

-1

我对初学者学习C语言的建议是阅读“Let Us C”一书,作者是“Yashwant Kanetkar”。


1
如果您能提供更多关于这本书的参考资料,那就更好了:URL链接...谢谢。 - menjaraz

-1

对于初学者来说,最好的C语言书籍是Yashwant Kanetkar的《Let Us C》。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接