C语言怎样学 很急!!!!

拒绝访问 | bbs.hackbase.com | 百度云加速
请打开cookies.
此网站 (bbs.hackbase.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3e0fd21e1166508c-ua98).
重新安装浏览器,或使用别的浏览器  如题,目前开网店,但总觉得网店开不了一辈子,得有个一技之长。想自学C语言,30岁的人了,还可以吗?  本来想着,别把自己搞得那么累。但是前几天的报纸都说了,中国人养老要有两百多万(人民币贬值太快,木有办法)。再累也要干。  其实不是现在才开始自学C语言的。已经自学了两次,但是都看教程看了一半就不看了。现在是第三次自学。能不能学好是个问题。唯一能给我信心的一个例子是自己学游泳的例子。小学开始,就经常玩水,初中高中也经常玩,但是就学不会游泳。然后09年的时候,我决心要学会游泳,找了教程看一下,第二天就学会了自由泳。
楼主发言:15次 发图:0张 | 更多
  学C语言不是主要目标,是第一个步骤。目标嵌入式系统开发。  呵呵,是不是目标很高
  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。
  @屌丝之霸 2楼
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  汇编太难了
  @屌丝之霸 2楼
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  一起开网店的同学,是结构工程师。还有一个电子工程师同事呢。万一学得好,还真的可以开发一些山寨产品赚不少钱的  话又说回来,主要觉得自己木有社保,要有一技之长呀。学这个不急着赚钱的。网店的收入还可以
  @屌丝之霸 2楼
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  汇编的教程学了一半,好像看了一些人说,不需要懂很多汇编
  如果你做嵌入式系统开发,单片机这块,也就ARM、keil这块,真没有必要学汇编,学汇编你out了,汇编主要用在加密、解密等逆向工程为主,这块的混水很深,你年龄体力都不允许了!至于C语言,这个容易,但毕竟你也不小了,也错过黄金时间了。没法和00后比了!
  @正在学游泳的小鱼 6楼
19:01:00  如果你做嵌入式系统开发,单片机这块,也就ARM、keil这块,真没有必要学汇编,学汇编你out了,汇编主要用在加密、解密等逆向工程为主,这块的混水很深,你年龄体力都不允许了!至于C语言,这个容易,但毕竟你也不小了,也错过黄金时间了。没法和00后比了!  -----------------------------  樓主還告訴你一個殘酷的現實,就深圳這地方來說,通常招聘程序員都要求35歲以下;  不要告訴我高手的怎麼怎麼著,大多數人都不是高手;(當然如果你能成為高手除外哈)  另外一個現實是,從事技術相關工作的人,30-35歲這個年齡段都在做兩件事:轉行或轉為技術管理類;  轉行就好說了,不作解釋;  技術管理類嘛,從硬/軟件工程師職位轉向主管或經理職位;但主管或經理職位也是有職業壽命的……悲崔,這是後話。
  @屌丝之霸
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  @番茄楼
18:42:00  一起开网店的同学,是结构工程师。还有一个电子工程师同事呢。万一学得好,还真的可以开发一些山寨产品赚不少钱的  话又说回来,主要觉得自己木有社保,要有一技之长呀。学这个不急着赚钱的。网店的收入还可以  -----------------------------  那万一学不好呢?不是浪费时间?  这种专业技术性的工作都是在实践中成长的,你没有那个环境,就靠自己看看书,就算把语言的规则弄得再熟,也是没啥用处的。而且,你觉得跟那些科班出生身的,跟那些长期从事这一行业的人比有何优势?这些人都不见得能靠技术得到多高的回报,你觉得你又能得到什么?嵌入式对软硬件的知识要求很广,你已经30岁了,就算C语言学的不错,那也连入门都算不上,有哪家公司会要像这样一个没有专业背景、没有相关经验的人?我明白你的担忧,也能够理解你的想法,但我觉得不要把希望都寄托在一些机率很小的事情上。如果是出于爱好的学习,没有问题,如果是从赚钱或发展的角度来考虑,你还不如在你有优势的地方发展,想想怎么把你的店做大做强,或是做些其它的生意或投资,比你花时间学什么C语言、嵌入式靠谱得多。
  @东风归去 8楼
19:53:00  那万一学不好呢?不是浪费时间?  这种专业技术性的工作都是在实践中成长的,你没有那个环境,就靠自己看看书,就算把语言的规则弄得再熟,也是没啥用处的。而且,你觉得跟那些科班出生身的,跟那些长期从事这一行业的人比有何优势?这些人都不见得能靠技术得到多高的回报,你觉得你又能得到什么?嵌入式对软硬件的知识要求很广,你已经30岁了,就算C语言学的不错,那也连入门都算不上,有哪家公司会要像这样一......  -----------------------------  那么多万一,担心浪费时间,还有什么可以做得好的呢?从头到尾都没有说过要进哪家公司打工的呀  不一定要给人打工才能成为高手吧?
  一心想着进什么公司,给什么人打工的话,能成为高手吗?
  什么时候开始都不会晚,王江民是40岁才开始的,造就了江民杀毒软件  
  网店一个月到手的都是1-2W,根本犯不着像你说的那样去找工作
  C语言好入门,难精。好歹中级语言  汇编入门都难。低级语言嘛。而且要十分熟悉硬件和数据结构。  好运!  如果靠编程赚钱,最好多懂几门语言。  比如:千千静听。  先试用后获利。:)  
  @风吹我心凉 13楼
20:52:00  C语言好入门,难精。好歹中级语言  汇编入门都难。低级语言嘛。而且要十分熟悉硬件和数据结构。  好运!  如果靠编程赚钱,最好多懂几门语言。  比如:千千静听。  先试用后获利。:)  -----------------------------  听说是要十分熟悉硬件和数据结构,还有很多其他知识,要构建好知识体系。  反正大把空闲时间,对这个有兴趣
  少折腾了。建议你学做臭豆腐好些 、
  我学过c,真不建议你学。
  当做业余兴趣可以,要做这一行的话,很需要毅力
  C语言好入门,好难哦,建议楼猪不要学了,30岁了,人生快走了一半,放弃,  建议你放弃。
  学这干啥,也不赚钱,一堆人要转行那
  喜歡就去做,不做怎么知道呢?
  回复第9楼,@番茄198311  @东风归去 8楼
19:53:00   那万一学不好呢?不是浪费时间?   这种专业技术性的工作都是在实践中成长的,你没有那个环境,就靠自己看看书,就算把语言的规则弄得再熟,也是没啥用处的。而且,你觉得跟那些科班出生身的,跟那些长期从事这一行业的人比有何优势?这些人都不见得能靠技术得到多高的回报,你觉得你又能得到什么?嵌入式对软硬件的知识要求很广,你已经30岁了,就算C语言学的不错,那也连入门都算不上,有哪家公司会要像这样一......   -----------------------------   那么多万一,担心浪费时间,还有什么可以做得好的呢?从头到尾都没有说过要进哪家公司打工的呀   不一定要给人打工才能成为高手吧?  --------------------------  '  怎么跟你说呢?时间也是成本啊,何必用在投入大,成效小的地方呢?你在这方面真没任何的优势。C语言这玩意其实很简单,你都学不下去,后面的东西就更难说了。说白了,你毫无基础,年纪也不小了,学这些是吃力不讨好的事。  工程类的东西最后都要落到实践上,你不去公司里通过工作学习,就靠看几本书,弄个仿真机、模拟器什么的,我真不知道你怎么成为高手,也许你是真正的天才吧。  
  我想请问你   你开网店一个月平均能赚多少啊  还有你开的是什么网店啊 淘宝还是??
  @zwwww1 22楼
09:44:00  我想请问你  你开网店一个月平均能赚多少啊  还有你开的是什么网店啊 淘宝还是??  -----------------------------  淘宝网店,卖家电
  @zwwww1 22楼
09:44:00  我想请问你  你开网店一个月平均能赚多少啊  还有你开的是什么网店啊 淘宝还是??  -----------------------------  旺季的时候,扣除食宿玩乐成本,拿3成,到手两万。淡季也有六七千  春节放假,半个多月没卖东西,就更少些
  脑袋被门夹了
  不晚,只要你想学习;C语言很有价值。
  楼主,把你的自由泳教程发给我吧,谢谢  QQ:  楼主,把你的自由泳教程发给我吧,谢谢  QQ:
  天热了想学游泳,很需要你的教程
  code acadamy一个在线学习编程的网站
  你還在吹啊, 我以經在學, java, java script 及安卓了....(3個也是java base)...
  @we_are123 26楼
13:15:00  不晚,只要你想学习;C语言很有价值。  -----------------------------  谢谢
  @wdqxxx 28楼
13:20:00  天热了想学游泳,很需要你的教程  -----------------------------  没有什么教程呀,我只是在优酷上随便找了个自由泳的视频
  兴趣不大,还是算了吧,浪费时间和精力  
  @番茄198311 你的自由游教材在哪看的。介绍给我吧。我也是学了好多次了。十岁那年还差点淹死了。
  自学学不下去去 还是建议找培训机构 北大青鸟什么的  花了钱 自然愿意花心思学
  我觉得游泳是天生的吧,还需要学吗?
  C++吧,C语言有个P用啊,我大学C语言学的也不错啊,出来啥用也没有
  看不下去了,好多庸才,具体到语言层面(包括C++)没啥好学的,关键是程序后面的知识。楼主,学C半年足够了。
  这么深的学问!我想没必要问大家……自己应该更有谱……
  C应该也有hello world吧?先做第一个hw,以后就抄别人代码就行拉。。  
  不晚啊,好多老外50岁了还在学编程啊,楼主有兴趣就好,兴趣是最好的老师。建议楼主学一些Arduino平台的,开发小东西很实用的。
  @番茄198311   C语言比较过时了,没啥用场了
  C语言不是过时了!……而是要有条件……只是简单的编程已经不合时代要求了!就机械设计而言,相对的说、无需C语言……
  @心又在驿动 43楼
18:15:00  @番茄198311  C语言比较过时了,没啥用场了  -----------------------------  网上看别人给新手的建议,学嵌入式系统开发,要构建好知识体系。C语言好像还挺重要的
  是不是想中年谢顶,50岁就挂掉?那就学吧。  都30岁了真心没意义搞程序了,那些20岁搞了十几年程序的到35都转型了,你要记住中国人太多,新陈代谢太快,你的记忆力和创造力永远没法和那些年轻你20岁的孩子比的。
  没有源代码、木用……只能依靠开发软件了!开发软件也不是很容易掌握……
  只是学一点码源, 东拼西凑一点。个人觉得有时间学这些总好过学那些虚无漂渺的强吧。。  
  C语言只是一个工具,找准要用这个工具的地方先吧
  如果楼主确实对C语言感兴趣,那我就鼓励楼主学下去。如果只是为了另一个生计,那就算了。C语言不难学,但学得精通的人不多;更多的是需要大量的项目实践,知道怎么去定位,怎么追踪调试,什么地方指针跑飞了,什么地方语法有歧义……再说,做嵌入式,C语言只是其中一方面,它只是工具,还有很多要学的东西……
  @圣魔导 50楼
20:25:00  如果楼主确实对C语言感兴趣,那我就鼓励楼主学下去。如果只是为了另一个生计,那就算了。C语言不难学,但学得精通的人不多;更多的是需要大量的项目实践,知道怎么去定位,怎么追踪调试,什么地方指针跑飞了,什么地方语法有歧义……再说,做嵌入式,C语言只是其中一方面,它只是工具,还有很多要学的东西……  -----------------------------  暂时衣食无忧,兴趣而已
  阔月隔海、圣魔导讲的都有道理!问题是条件!……量力而行!圣魔导应该是纺织方面的……
  也希望看到中国自主开发的软件更具市场竞争力!
  @WMCG56 52楼
08:33:00  阔月隔海、圣魔导讲的都有道理!问题是条件!……量力而行!圣魔导应该是纺织方面的……  -----------------------------  纺织方面?不懂
  又一个废人将要产生。
  @zwwww1
09:44:00  我想请问你  你开网店一个月平均能赚多少啊  还有你开的是什么网店啊 淘宝还是??  -----------------------------  @番茄楼
12:37:00  旺季的时候,扣除食宿玩乐成本,拿3成,到手两万。淡季也有六七千  春节放假,半个多月没卖东西,就更少些  -----------------------------  一年能到手多少啊?
  楼主看教程就能学会游泳,表示膜拜!  
  @etonch 57楼
17:51:00  楼主看教程就能学会游泳,表示膜拜!  -----------------------------  其实我应该很惭愧的,小学开始玩水,差不多20年,才勉强算是学会
  学C语言,一半靠天赋,一半靠年领,这个行业发展太快吧,个人觉得20左右学这个可以,反正我是很笨,在学校就搞不懂这个C语言。听课象听天书,考试还是抄别人的才过关。
  回复第24楼,@番茄198311  @zwwww1 22楼
09:44:00   我想请问你   你开网店一个月平均能赚多少啊   还有你开的是什么网店啊 淘宝还是??   -----------------------------   旺季的时候,扣除食宿玩乐成本,拿3成,到手两万。淡季也有六七千   春节放假,半个多月没卖东西,就更少些  --------------------------  靠,这收入学什么C语言,现在学C语言的三十岁都在转行,楼主脑子有问题吧,好好开你的网店这份有前途的职业吧。现在这社会,学什么都不保险,唯有足够的钱才保险。  
  其实是写安卓手机程式, 找些天涯名女id做游戏果照供人下载最好玩。。  
  楼主啊,你太好玩了。  C语言只是个工具  但是,你以为学会了C语言,就是一技之长了?  C语言真的不难,但是,你想靠C语言去谋个生,就难了。  打个比方说,现在大部分人都会写字吧?  但能通过写字来谋生的,有几个?
  30岁,学起来肯定费劲多了,你可以到http://www.olistudy.com上去先体验下C语言的难度,当然如果你能够大部分看懂的话,那应该没有问题了。
  楼主去学个铆工吧,半年基本就出师了
  王江民40岁学汇编,创造了著名的杀毒软件  
  我是某计算机上市公司hr,lz谈谈你的俄罗斯方块的编程思路  
  用Apache精通C语言语法和开发模式系列讲座:最好C语言视频和初学者最爱的C语言练习。  网址:http://www.wisestudy.cn/videodetail/power_apache_c.html。  为什么说最好?理由如下:  1、锐英源接触编程初学者10多年了,为初学者录制视频也10多年了,10多年经验出品,当然精品。  2、Apache精典。  3、锐英源擅长英语,对于Apache的英文资料锐英源有深入研究,所以锐英源对Apache吃的透。  4、锐英源当过招聘主管,对于学哪些理论容易过面试有深入研究。  5、经过多年非专业学员的在线和实地培训,锐英源擅长设计练习锻炼编程思维
  8错。。。  
  我现在的年龄与想法跟楼主是差不多的,哈哈,楼主学到哪里来了?
  做嵌入式,不是只学C语言就够的,还有硬件知识,调试经验,需要积累的,书上学不到的
  四十5岁了想自考可以吗?
  我是高中生,也有这方面的打算  
  哈哈,本人在深圳8,9年的程序员生涯,现在已转行做股票操盘手。
  @番茄198311 楼主我就是做嵌入式C的,也30了,做了7年,看不到希望啊,再过几年不知道靠什么生活呢。
  @番茄198311 不如你带我网店,我帮忙你学习C。要搞嵌入式建议学习:汇编语言-计算机组成原理-C语言-数据结构-操作系统-C++/Linux/java
  学了有嘛用??  
  教我。。。。  
  @番茄198311 C语言交友平台:www.tuilixuec.com
  嗯  
  @番茄198311   推理学C语言群,用推理破案的方式学习C语言,硕士5年经验大神坐镇,学姐管理,美女群主,最新原创2015视频资源完全免费,欢迎初学者加入,满员拒入,欲加从速。推理学C语言群:
  https://item.taobao.com/item.htm?spm=a1z10.3-c.w42.41.vFjO4I&id= C语言视频教程,欢迎下载!
  应该学什么
  @番茄198311 可以,只是目测,您应该没有基础,建议还是培训,像信盈达就不错,你可以去了解一下,qq
  @屌丝之霸
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  @番茄3-03-27 18:44:00  汇编的教程学了一半,好像看了一些人说,不需要懂很多汇编  -----------------------------  欢迎加入C/C++学习交流群免费领取学习资料,群号码:
  @屌丝之霸
17:56:00  楼主,如果为了赚钱去学,建议改学别的吧,学好未必能赚钱,起码汇编。  -----------------------------  @番茄3-03-27 18:42:00  一起开网店的同学,是结构工程师。还有一个电子工程师同事呢。万一学得好,还真的可以开发一些山寨产品赚不少钱的  话又说回来,主要觉得自己木有社保,要有一技之长呀。学这个不急着赚钱的。网店的收入还可以  -----------------------------
  楼主,很想知道你网店卖什么的,我学土建的,唉现在和媳妇开饭馆,生意不好做。想和你学习做网店。
  @番茄3-03-27 17:40:00  学C语言不是主要目标,是第一个步骤。目标嵌入式系统开发。  呵呵,是不是目标很高  -----------------------------  果只有C语言基础,确实不好找工作,方向也很难确定,但是从目前发展方向看,嵌入式是个不错的选择。嵌入式,其实就是ARM+Linux,重点其实是嵌入式操作系统,建议先从单片机做起,了解GPIO、定时器啥的,理解怎么用C语言操作硬件。对于刚毕业没工作经验的可以去培训下嵌入式linux的,个人觉得“星创客”还可以,嵌入式很多年了,老师对于嵌入式教学都非常有经验。线上对接推荐华清星创客学院的教程,每个知识点都有对应的案例,理解起来很容易。
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)云风最近写了一篇博客《》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C语言的朋友一个有价值的参考。
为什么要学习C语言?
为什么要学习、使用C语言?为什么要学习一个可能比自己都岁数大的编程语言?
我在前面如何学习编程语言的博客文章 里提到,选择一门编程语言,&为什么而学&这个目的是最重要的,目的不明确就没法学好。这也是为什么很多学生朋友在大学里必修C语言却觉得没学明白的原因。因为学习的目的不明确,学习当然也没有动力。还有一个原因是C语言是工程实践性很强的语言,它不是来自某个研究所某个大学学院,而是实实在在从项目需要中产生,伴随着Unix的兴起而流行,语义简明清晰,功能强大而不臃肿,简洁而又不过分简单,实在是居家旅行工作学习必备之良友。
C语言相比C++的优点之一就是最小惊讶原则,一是一二是二,不会在私底下产生一些莫名其妙的额外产物。用C++做个例子,比如这样一个函数原型void PassWithClassValue(COneClass clsParam1),稍微了解C++的朋友都会知道,如果你没有实现COneClass的拷贝构造函数,编译器会好心的帮你实现一个,而且在调用这个函数PassWithClassValue的时候,偷偷地调用拷贝构造函数产生一个临时对象作为参数传递,对于某些情况,比如编写操作系统这类必须优化性能的情景下,这些自以为是的东西是非常邪恶的事情。
C语言本身只提供必要的语言特性,其它复杂一点功能如文件处理、数学计算等等都以库函数方式提供,甚至连malloc、free这种&必须有&的功能,也是以标准库函数的方式提供,而不是作为C语言核心出现。在伟大的著名的无所不包的《K&R》开头部分就提到了,for其实可以通过while来完成,只不过for可以写的更简洁,言外之意,对于C语言for其实不是必要的。跑题一点说,在其它程序语言中Lua可以说继承了C语言简洁的设计哲学,甚至连continue这种几乎必备的关键字都一直拒绝加入,在Lua的maillist以及wiki里都提到过continue这个问题,Lua语言维护者认为continue对于Lua而言不是必要的,也不考虑在后续版本中添加这个关键字。这种简洁哲学也让C语言的可移植性、便携性特别优秀,也使得很多嵌入式系统依然使用C语言作为主要编程工作语言。
Java语言有一个口号:&一次编写,处处运行&,就是跨平台这个噱头。实际上C语言从早期开始就几乎达到了&一次编写,处处编译&,在ANSI在1989年统一了C语言标准以后(称之为C89),只要特定平台上的编译器完整实现了C89标准,而且你的代码没有使用某些特殊的扩展(GCC以及微软都有自己的编译器特定扩展),那么代码一定可以编译通过,再实现一下操作系统相关的函数库,C语言的移植就是很简单的事情。可以用Lua作为例子,Lua本身是完全遵循C89标准,没有使用任何特定扩展,这也保证了有C语言编译器的平台,都可以编译使用Lua。可以编译运行C语言的硬件平台可以从A排到Z,真是非常有意思的事情。
C语言也是一个比较少见的应用领域极为广泛的语言。比如编写操作系统这种高难问题,只有C++、汇编语言可以做到。C语言可以编写服务器端软件如Apache、Nginx,或者编写GUI程序,如GTK。大多数程序语言的第一版是通过C语言实现,借助前面提到的&一次编写处处编译&,最大的保证了这些程序语言的可移植性。在Web开发领域,C语言的应用相对较少,这也是一种取舍的结果,Web开发需要使用PHP、Ruby、Python这样的动态语言,可以快速上线快速修改,可以最大程度满足用户时时变化的需求,这也是C语言的弱项。如果把程序语言的应用领域从硬件到管理软件、Web程序做一个很粗略从下到上的排列,C语言适合领域是比较底层靠近硬件的部分,而新兴语言比较偏重于高层管理或者Web开发这种相对贴近最终用户的领域。比较流行的混合开发模式是使用C语言编写底层高性能部分代码或后台服务器代码,而使用动态语言如Python做前端开发,充分发挥它们各自的优势力量。
提到C语言的缺点,常常是它缺少这种或者那种特性,比如有人建议加入GC,有人建议加入并行或者并发支持,有人提到没有一个比较完整的类似C++的异常策略。这些特性有的可以通过引入第三方库来实现,但C语言的设计哲学其实决定了它不会像C++那样&非常强大&。即使引入了某些人期望的特性,依然会是某些人喜欢某些人不喜欢的情形,现在的功能对于C语言应用领域来说已经够用,其它特性可以通过特定程序语言实现,并且通过C API与C语言编写的程序进行交互。任何一个工匠都不可能只使用一个工具完成他的工作,不同工具结合起来才能更快更好的完成任务。
提到C API,也稍微介绍一下,我们知道windows操作系统的api也好,Linux的系统api也好,或者是想给Ruby、Python编写扩展模块,C语言形式的函数定义都是唯一的选择。C语言就好像是一个中间层或者是胶水,如果想把不同编程语言实现的功能模块混合使用,C语言是最佳的选择。
提了这么多关于C语言的好处,那么学习C语言是否适合就看你自己的判断了,例如要进行一个嵌入式项目,或者需要进行服务器端开发,或者写一个性能相关的组件等等,C语言都是比较好用的选择。另外也可以在C++的使用过程中有意的使用C语言的思考方式,汲取C语言简洁明快清晰地设计思路,对编程设计水平会有很大的提高。
C语言学习方法
在前面 曾经提到过一个比较系统学习一门新的编程语言的方式,C语言学习也可以按照类似的顺序:阅读参考书,阅读代码,编写调试实际程序,上网参与讨论,研究高级话题。
学习语言的开始一般是阅读参考书。我建议选择几本非常经典的好书,仔细完整反复阅读几遍,&书读百遍其义自现&。选择C语言学习的好处是,这几本书基本上完整涵盖了C语言编程领域的方方面面,不会像C++那样,即使读完一堆书还是有些糊涂,依然有这样那样难懂的陷阱。
1,参考书籍
在豆瓣上列了一个书单,大家可以直接参考
在下面简单点评一下,阅读顺序最好参照列出的顺序。
《The C Programming Language》
如果你只想买一本书学习C语言,只需要买这一本就够了。如果你经费足够,建议你多买几本,办公室、家里都放上一本,随手都可以翻翻。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。
《The C Programming Language》(后面称为 K&R)里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高,可以这样说,如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了。K&R书里面每段都蕴含着非常值得探究的软件开发工程实践经验,如果没有一定的开发经验,其实是看不出来这些冰山下面的内容的,比如开头一章就提出用写完整代码这种方式来教学,而在书中那些C语言的陷阱或者可能出问题的地方,都有提到,但是由于篇幅所限,写的非常简约,很难让人一下就看懂。我正在完整的逐字逐句的阅读此书,希望能稍作注解,写几篇博客分享一下。
《C程序设计语言(第2版&新版)》
这是K&R的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。
《C陷阱与缺陷》
《C专家编程》
这两本书也是学习及使用C语言的朋友必备的两本书,比如《C专家编程》,专门用两三个章节详细介绍C语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略过的地方做了详细补充,强烈推荐。
《C语言参考手册》
这是最后一本强烈推荐你最好买回家作为案头书必备的参考书。前面几本书或者稍显简略,或者专注某个特定专题,都不适合遇到问题时翻查。这本《C语言参考手册》可以看作是C语言编程的《新华字典》,全面而权威。里面还涵盖了C99的内容,紧跟时代潮流。
下面几本书都可以作为交叉参考,也都很有价值,也是建议大家都买下来,好书如朋友,日久弥新,像是我推荐的这几本书在douban或者amazon上评分都非常高,而且反复再版。
《C和指针》
指针的重要性如何,学过C语言(或者C++)的朋友都知道,这本书更是把指针拔高到了与C语言平起平坐的地位,其实也是从头开始介绍,作为教学参考书也是可以的。
《C标准库》
这本书是专门介绍C语言的标准库如何实现的,比如malloc算法,用标准的C语言该如何写?strlen这个函数应该如何实现?尽管书中不少代码与真实的C标准库相差很多(由于标准库需要考虑性能优化,很多函数有一些特定的trick),但是绝对值得参考。
《你必须知道的495个C语言问题》
这本书其实就是C-FAQ的印刷版本,C-FAQ在各种编程语言的FAQ中可以称得上质量一流。如果你想应聘或者招聘C语言相关程序员,这本书一定要参考。
《Linux C编程一站式学习》
这本书是基于特定操作系统Linux来介绍C语言编程,可作为计算机相关专业的教科书或入门参考书,也是书单里面唯一一本国人原创的编程书籍,非常难得。书中几乎所有内容都在网上直接公开,针对读者的意见进行修改,这也是非常难得的一种开放态度。非常推荐大家买一本。
学习C语言,一定不能只读书,应该动手练习完成书里面的项目需求(比如编写一个目录浏览器)以及每章的练习题目。这就需要有可以实验的环境,下面针对不同操作系统简单做一下介绍。
2,动手实验环境搭建
也没有调查过,不知道现在学校里学习C语言是不是依然跟着谭浩强老师用TurboC2.0编程,如果还是这个组合的话,那就太差劲了,赶快抛开它们。
下面主要介绍不同操作系统平台下的集成编程环境,基于初学者以及我个人喜好,就不推荐大家命令行下用vim编程了,直接上IDE。
Windows系统下推荐大家使用Code::blocks这个软件。这个软件最大优点是自带了基于mingw的GCC以及GDB,只要下载70M左右软件包,就可以完整支持C++、C语言编程了。各种功能(比如调试功能)也很强大,版本更新也比较快。注意下载选择名字有mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也许有所不同)。
如果需要做Windows操作系统的开发,可以下载Visual C++ 2010 Express。
因为Code::Blocks不包含Windows编程头文件(实际是因为没有Windows SDK),无法编写Windows操作系统相关的界面应用程序或者服务类程序。而VC++Express自带了这些头文件以及编程库,虽然功能稍微简陋,但对于练习使用基本够用。
对于计算机专业的学生朋友,建议大家使用Linux操作系统,或者更详细一点是使用Xubuntu操作系统作为桌面,使用Netbeans和GCC这个组合(当然也可以选择Code::Blocks)。在Xubuntu下可以通过apt-get install build-essential这个命令安装gcc相关程序,已经可以在Terminal下编译C语言程序了,但为了使用方便,大家可以选择Netbeans的C++支持包,在Netbeans网站上就能下载。
如果使用苹果Mac系统,毫无疑问XCode就是编程的绝佳选择,XCode可以在苹果开发者网站上免费下载,在IPhone SDK中也包含了XCode。
如果手头没有合适的编程环境,还需要实验一些简单的代码,可以用 提供的服务,在线编写运行代码。
另外建议大家申请一个github.com的账号,在gist.github.com可以保存自己的练习代码,就不需要随身带着U盘了。
3,网络资源
如果想用十分钟时间了解一下C语言的来龙去脉、前世今生,维基百科这个页面 是最佳选择。
从维基百科可以看到,C语言1972年由Dennis Ritchie设计的命令式、结构化范式编程语言。类型为静态的弱类型,需要显式定义。最新国际标准为C99。设计上主要受到了B、ALGOL68、汇编语言、PL/I、FORTRAN的影响,C语言也影响了大量编程语言,如C++、Objective-C、C#、Java、Go、PHP、Python等等(个人觉得受C影响很大的是PHP,基本上有C编程基础的程序员,很容易就能上手PHP了,除了PHP的OO部分)。
在维基百科条目中有很大篇幅介绍了作者认为C语言缺失的特性,比如面向对象、多线程、GC、异常处理等等,当然这有些吹毛求疵,如果需要这些特性,完全可以用其它程序语言。另外一个介绍的重点是&未定义行为&,有些我们认为理所当然的结果,其实在C语言标准中并没有明确定义,假定这些行为应该如何,当程序使用另外的编译器或者不同版本编译器编译运行,都可能有bug产生。
接下来维基百科条目谈到了C语言的用处,必须承认尽管现在编程语言成百上千,能称之为&系统级&的少之又少,新兴语言中只有Go还能称得上。现在大规模软件项目中完全选用C语言可能性不大,但是核心部分完全可以用C搭建,相对C++开发工具的高昂价格,C语言相关的免费辅助开发软件非常丰富,比如splint,valgrind,不少核心库经过长期使用也都非常稳定。
由于C语言广泛支持各种平台以及编译器相对成熟可靠,不少编程语言选择C语言作为一个中间层,比如Glasgow Haskell编译器就是这样做的。
另一个可以找到大量C语言编程相关资料的地方是&美味书签&,通过搜索特定关键字 (C + programming)就可以找到很多值得挖掘的资源
还可以参考dmoz.org的C语言分类 相比美味书签时效性能差点,但是分类比较系统,查找也要容易一些。
程序员往往是懒惰的,&拿来主义&、&拷贝主义&很流行也很有效,当对某个函数或者关键字不是很理解的时候,看看别人是怎么使用的,会非常有启发性。这里介绍几个常用的代码搜索网站,最常用的是google的codesearch: ,可以通过不同条件及正则表达式搜索特定关键词。另外可以参考维基百科上一个&&分类,里面代码写的也很不错。还可以在github.com上搜索相关项目。在前面博客文章我还介绍了一个名为罗塞塔代码的网站 这个网站上可以找到不同程序语言针对某个问题的解决方案,用于学习比较非常便利。
学习编程也需要大量阅读名家经典代码,与学中文英文需要大量阅读名著一个道理,C语言编程优质项目那是&彩旗飘舞,人山人海&,个人建议可以看看Lua、Sqlite、Nginx这些项目的代码,代码量不多,而且代码质量也都比较高。另外可以看看Linux内核代码,坊间有不少书籍可以帮助解读。关于如何很好的阅读代码,大家可以参考《Code Reading》这本书。
书看了几本,代码写了一些,也略微读了读其他人的代码,就应该用C语言来完成真实工作中碰到的问题,让C语言真正成为你的瑞士军刀。只有当你经常使用C语言来进行编程工作,经常思考如何通过C设计一个优雅高效的系统,才能更深刻的理解C语言设计哲学。
还可以到 参与回答问题,浏览其他人的问题解答来汲取知识,比如这篇 就介绍了一个C语言关于char类型的小陷阱。
C语言学习当中,有一些难点需要多加注意,如pointer与array的不同之处,复杂类型定义如何解读,如何正确使用预处理preprocessor以及宏定义。其实这些内容在前面书籍都是反复提到,如果按部就班学习下来,应该不成问题。
当C语言学习的差不多时候,还可以学习一门动态语言,比如Lua或者Python,试着在实际工作项目中混合使用动态语言与C语言,一加一发挥出来的力量不仅仅是二,而是非常二(说笑一下,哈哈)。
还有什么问题,欢迎留言。
一些有用的C语言网络资源:
C语言标准化组织ISO JTC1/SC22/WG14的主页,在这里可以找到ISO C的文档:
《The Development of the C Language》作者Dennis Ritchie,极为经典的论文。
&C语言全景&这个网站内容很全面:
Dan Saks在embedded.com上的专栏 ,里面文章很有深度,值得一读。
这也是一个C语言资源汇总页面。
混乱C语言代码大赛,很著名。
另外一个C语言编程大赛,主要面向黑客。
comp.lang.c以及c.moderated这两个讨论组推荐订阅,相当于互联网最大的C相关编程问题论坛:
这里对C语言的各种bit操作做了收集整理,不少题目在面试时候经常出现。
台湾的惯C达人Jserv博客,建议大家订阅:
一些值得关注及研究的C语言相关项目:
TinyCC,被很多项目用作动态编译C语言的编译器引擎:
GCC的标准库实现:
Glib是GTK的底层辅助编程库,与C标准库是不一样的,在C语言上实现了面向对象机制:
dietlibc在前面博客文章介绍过,C标准库的另一种实现:
一些C语言编程时可以使用的工具软件,帮你提高代码质量:
PMD可用于检测重复代码
llvm的静态分析项目
C语言编程规范编程标准:
cert这个文档国内有中文翻译版本:
C语言编程电子书及教程:
这一本写的非常详细,你可以把它看成是类似谭浩强版的教科书。
这一本云风曾经推荐过,相当深入的介绍了C99标准,深入细节时候需要读读。
这本书在网上流传一个中文版本,《编写优化、高效、无错地代码》,另外也有英文影印版《编程精粹》。
作者王聪,也是相当hard geek,从两个样章看,包含了相当多的内容。
《C语言深度解剖》这本可以在百度文库或google搜到,可以读读,有些参考性。
《C标准和实现》作者姚新颜,他的《深度探索C、C++》算是当年比较有深度的书籍,可惜已经绝版了。这本书也可以在百度文库搜到。这本书也比较值得读。
良葛格C语言学习笔记
C与C++的兼容性问题
另一个文档关于C与C++标准兼容性问题:
《C Elements of Style》
《Linux安全编程》
《C Craft》电子版
《The function pointer tutorials》函数指针教程。
C语言编程及Unix系统调用,想用C在Unix或者Linux编程的朋友可以参考。
优化C、C++代码
图文并茂介绍C语言的指针
另外一篇介绍C语言优化的文章
一个C语言教学ppt
一些Unix下C语言编程相关的文章
Unix下如何建立静态、动态C语言函数库
如何使用GDB
一些C语言编程技巧
Advanced C programming,高级C语言编程,可以提高水平,非常有帮助
C语言问答,这些题目也可用于面试
阅读(...) 评论()}

我要回帖

更多关于 数学题脑筋急转弯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信