尝试开始学习C语言

4

有没有人知道一些好的资源,可以提供一些任务或问题来练习那些对于像C#和PHP这样的高级语言有经验的人来说是“新”的C语言技术?我所能找到的似乎都是更多的“挑战”而不是实践中遇到的问题。

谢谢。


请参见:https://dev59.com/a-o6XIcBkEYKwwoYTzRZ - TStamper
9个回答

13

+1。这正是我要说的。 :) - hbw
有人知道是否有计划出版第三版吗? - dmckee --- ex-moderator kitten
2
@mmw:K&R 对于第一次编程的程序员来说可能不是一本好书,但对于一个新接触 C 语言的有能力的程序员来说,它是一本非常棒的书。至少对我来说是这样的。 - dmckee --- ex-moderator kitten
2
@mmw:OP 特别要求适合那些刚接触 C 语言,但已经有高级语言经验的人。 - hbw
1
在我看来,第一版的K&R是一本非常好的书。它很瘦、简洁、清晰。它很好地解释了语言本身。它没有多余的废话和冗余的材料,并且期望读者认真阅读。后来的版本由于标准引入的复杂性而受到一些影响,但仍然非常易读。我同意Stroustrup的所有版本都存在这个问题,随着版本的增加,它们的难度也急剧增加。 - RBerteig
显示剩余3条评论

5

你可以尝试阅读Bruce Eckel的《Thinking in C》。

这本书完全免费,可以从他的网站上下载。


不是一本好书,特别是作为第一本书。 - user1812457

3

像其他人所说的那样,阅读K&R。

特别注意指针、结构体、联合体、位域、typedef和C预处理器。指针和指针算术非常重要。

阅读C预处理器手册。

学会编写make文件。阅读您版本的make手册。


1
+1 Makefiles 是必不可少的。Autotools 也是一个好主意,但如果你没有计划广泛分发你的工作,它们几乎会带来更多麻烦而不值得。 - Chris Lutz

1

K&R已经过时了。

我更喜欢Stephen Prata的C Primer Plus第5版 ISBN:0-672-32696-5

它涵盖了C99。


GCC对C99有很好的支持,但并不完整,其他编译器甚至都没有尝试过C99。此外,很多人会使用C++编译器,那么C99支持又有什么价值呢?我通常使用C89来保证可移植性。在我看来,最好先学习C作为C89,当你掌握了它之后再去发现C99中所有酷炫的新功能,因为尽管它已经发布了10年,但它们仍然感觉很酷和新(而且还没有全部实现)。 - Chris Lutz
我不使用C++,我只使用C,所以这对我很重要。 ;) 我还使用汇编语言。 - Hideo

0

@mmw:OP并不是在寻找一本入门书,而是要求一份C语言简介。 - xan

0

使用C语言进行问题解决和程序设计

作者:

Jeri R. Hanly,Elliot B. Koffmon和Frank L. Friedman


0

1991年,P.J. Plauger出版了The Standard C Library。这本书交替引用标准(我相信是C89)的引用和讨论库函数的使用方式,同时提供了完整的C标准库的实现描述和源代码。

是的,这本书没有更新到最新的标准,但它仍然有很大的价值,至少解释了一些标准库奇怪之处背后的原理。顺便说一下,Plauger曾经是标准委员会的成员。

Plauger写了许多关于C和早期Unix的经典书籍。找到并阅读最古老的那些,品尝一下C之前的历史...


0

考虑到您之前的(C#)编程经验,我猜您不需要一本教如何编程的书,而是需要了解 C 语言的复杂性和微妙之处。我推荐以下几本书:

  • Prentice Hall - Brian W. Kernighan 和 Dennis M. Ritchie 所著的 ANSI C 编程语言第二版。适合初学者。
  • Prentice Hall - 《专家 C 编程:深入 C 的秘密》。适合进阶学习。
  • ISO - C99 标准 - 最终版。对于许多疑问和问题非常有用。

0

一个可以解决已知答案问题的资源是Project Euler

它本身并不特定于C语言,因为问题的呈现方式明显具有数学取向。然而,诚实地尝试解决其中大量问题需要对结构、指针、标准库以及以C语言良好工作的思考方式有逐渐增长的熟练度。

另一个经常被忽视的资源是麻省理工学院将大部分课程放在网上供人免费使用。他们的EE/CS系也不例外。 《算法导论》这门课可能是一个合适的选择。教材是《算法导论》第二版,作者是Cormen、Leiserson、Rivest和Stein,相对来说写得还不错。我没有详尽地搜索课程列表,所以我相信那里还有其他宝藏。


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