我花了(上下)过去两年半的时间学习C,来自像k& r这样的书。我很快意识到我发现散文难以理解等等。我先读了“21天自学C”这本书,但我甚至无法理解。现在我对如何使用C的基本原理(这不包括指针/结构,但是基本设计)有了一个很好的了解,我想在21天内再次从指针中读取自己的C语言,所以我可以开始了致力于计划。我没有完成k& r,因为它的散文难度和一些练习。我知道有些人甚至没有使用书籍来学习如何编码。所以,我问,如果有人认为我刚刚阅读了21天的书,并从那里继续前进,并阅读更多高级书籍,如APUE或专家C编程,等等。
散文很容易理解,我真的想进入一些项目,我可能会为自己意识到某些陷阱。
你可以给我任何建议吗?我并不着急,但我渴望完成任务!答案 0 :(得分:9)
K& R是从IMO学习C语的最佳书籍。
我同意Peter Norvig:在21天内不可能精通任何事情。您要做的就是了解语法,以便开始编写简单的程序。
答案 1 :(得分:8)
我认为你需要尽快开始写一些简单的程序。试试你所知道的并熟悉它。然后阅读新的章节并试一试。
编写代码使其变为现实。看书很干。我有时会从头到尾读一本书来学习一门新语言,但那只是因为我现在学到了很多语言,所以我没有学习这些概念 - 只是语法和奇怪的小说特征。
答案 2 :(得分:3)
===根据我的个人经验和IMO,你正在倒退。 从Hello World开始! ===
当我学习一门新的编程语言时,我不只是说“我会学习这门语言,因为我听说学习很好”。我需要以理由来学习该语言。否则,如果我没有理由学习这门语言,我就不会学习或保留任何关于新编程语言的内容。
我从实践中学习,这就是我开始执行"hello world" example的原因。
C不是最用户友好的语言,没有很多“简单的小程序”,你可以实现并做一些很酷的事情......这就是为什么很难进入。
这就是为什么我认为你真的需要一个很好的激励来学习C。
现在你当前的动力是“我应该学习C,因为人们说学习很好”......我认为这不足以成为学习C的动力。一个建议是是用C语言编写一个GTK GUI应用程序,它将教你很多关于C的知识,最终产品将是非常具体和冷静的东西(因此是一个很好的激励因素)。
答案 3 :(得分:1)
最快的学习方法是需要了解它。如果您遇到问题需要解决,比如说,您需要为社区的足球队计算最佳比赛顺序,那么您将更好地学习如何解决问题。在你学习的时候,你最终会遇到一个又一个的困难,但是它们将永远是'我的程序不做x'而不是'我真的没有得到x'的形式。修复每个缺点的每项练习都会教会您关于语言以及如何使用的新内容。想到一个明确的目标,在此过程中取得许多小小的成功,这将带来额外的好处,这将使您精力充沛,并为您的学习提供积极的反馈。
K& R C书将为您提供使用C语言来解决问题的正确工具。
如果您需要一些通用的想法来解决问题,请尝试projecteuler.net,或在堆栈溢出时搜索相关问题
答案 4 :(得分:1)
答案 5 :(得分:0)
K& R是一本很棒的书(也许你只需要获得C)你需要的只是一些耐心和努力
答案 6 :(得分:0)
在K& R中进行练习21天。
先选择容易的。遇到困难时,可以询问Stackoverflow。 ;)
答案 7 :(得分:0)
学习C语言的最佳方法是将您正在学习的主题付诸实践。
例如,如果您正在学习循环和if语句等基本原则,那么您可以构建一个模拟自动售货机计数更改功能的小程序。
一旦你转向更高级的主题,如指针和数据结构,你可以构建一个类似程序的Logo。用户可以输入乌龟移动的每个步骤,您可以将其存储在链接列表中。之后,您可以通过删除,反转或添加节点来对数据结构执行指针操作。
所以我们的想法是开始编码来测试你学到的东西。你会发现有些时候你并不真正理解,尽管书中似乎很清楚。作为一名优秀的程序员,您最终必须重新审视这些主题,直到您真正了解它为止。
答案 8 :(得分:0)
在21天内自学C就像在2分钟内教自己手枪安全。两者的结果都是未定义的,除了C缺乏安全性或去除机制。
实际上,它将花费两年的时间来实现任何一种熟练的定义。你可以通过反复射击自己来获得这一点,同时学习使用C来解决实际问题的决心。
发现眨眼需要9个月的大部分时间,而眨眼是一个非常复杂的过程,C并不总是本能的。
答案 9 :(得分:0)
我认为你必须使用像GWT这样的库,因为当我们看到如何使用其他人的代码时,我们会学到更多。做一些UI比编写控制台应用程序更具激励性。操纵Windows,Button,CheckBox比使用int,float,double更有趣(并没有那么困难)。
答案 10 :(得分:-1)
首先,如果您根本没有编程经验,则无法在21天内学习语言。你最多需要几个月。
另一方面,如果你有编程经验,我的意见是你能做的最好的事情就是找到一本“食谱”,就像可用的那样here。我认为Deitel有类似C菜谱的东西,你应该访问他们的网站看看。在找到这样的书之后,你必须开始编写代码,各种代码,以涵盖在项目工作时可能遇到的大多数问题:内存管理/数据结构,输入/输出,网络等。
祝你好运!