美文网首页管理开发学习干货
C语言从零开始(一)

C语言从零开始(一)

作者: 天花板 | 来源:发表于2015-10-28 22:19 被阅读19393次

    写在前面

    毫无疑问,大部分资深程序员的编程生涯都是从C语言开始的。依稀还记得大一时候自学C语言时的情景,当时刚上大一,博主为了追求心仪的妹子就在完全不懂得C语言是什么的情况下报名参加下学期的计算机二级(C语言)考试。这一行为果断引来了女神关注,效果颇佳。然而在仔细了解了C语言之后,才发现比想象中的困难了一些。再加上大二的学长们各种渲染C语言有多难学,于是心中开始打鼓。

    大一的寒假,我从图书馆借来了三本C语言入门的书,开始自学。其中自然有大名鼎鼎的谭浩强老人家的书。记得当时安装Turb C就花了好几天的时间,几近崩溃边缘。后来终于用一个寒假的时间把基础知识都学会了,又做了几套计算机二级的卷子,连蒙带猜的通过了第二学期的考试。从此就算是和编程结了缘。

    当年的妹子如今已经杳无音信,而C语言的代码我一写就写了十年。

    这十年里,IDE从最简单的Turb C到VC 6.0再到VS2005、2008、2010、2013...开发方向从嵌入式到Windows开发再到Linux服务器开发,当年学习C语言那份热情依然还在。后来又在公司担任了新员工试用期项目培训的工作,每年都要把变量的指针和指针变量这样的东西反复讲。看着他们一个个独立完成了自己的试用期项目,博主成就感爆棚。

    最近几年,一直坚持利用业余时间帮助网友解决C语言学习过程中的各种疑难问题。每天至少花费2小时时间回复邮件。随着来信越来越多,越发感到力不从心。况且大部分朋友的问题都是类似的,重复回答实在无趣,于是萌生了在简书做分享的念头。希望更多的朋友与我交流。

    下面进入正题

    1. 教材选择

    不想给大家一长串书名,那样也许就直接抹杀了你学习C语言的兴趣,这里重点推荐三本。

    《C程序设计》谭浩强

    C程序设计

    很多大牛都不推荐谭浩强的《C语言程序设计》,但我不这么认为。这本书虽然讲的不那么到位但作为初学者从它入门还是挺合适的。最重要的是,网上大部分初级网友都是以它为基础进行交流的,有了它更容易融进各种论坛的讨论。

    《C程序设计语言》 Brian W.Kernighan | Dennis M.Ritchie

    C程序设计语言

    这本书是C语言之父Dennis参与编写的,虽然不厚,但有些思想讲得比较到位。建议初学者学习。

    《C Primer Plus》

    C Primer Plus

    这本书是非常经典的教材,每个知识点都介绍的非常到位。可以说这是入门级的选手的终结教材。如果想学好C语言并在后面有更大的发展,这本书必须要看。它能帮你打下坚固的程序设计基础。

    学习好这本书之后,学校里的各种考试和小竞赛就不在话下了。接下来,你该开始自己的进阶之路了。

    2. IDE选择

    如今,Turb C肯定是已经永远地退出历史舞台了,但初学者还是要选择一款合适的IDE才能方便的上手。

    GCC + vim

    很多学校的实验室都用的Linux系统,建议大家从vim开始编写最初的代码。

    编写好后执行下面代码:

    $ gcc -c main.c
    $ gcc -o main main.o
    $ ./main
    

    Code::Blocks

    这是一个轻量级的IDE,对于初学者而言,这是不二选择。

    Code::Blocks

    可以从这里下载你需要的版本

    VS 2013

    无疑这是C语言开发最牛X的工具,然而这里不建议初学者使用。由于Microsoft自己制定了很多自己关于开发的规则,初学者会发现课本上的代码原封不动的敲在上面却报出莫名其妙的错误。

    VS2013

    不过,当你拥有一定C语言基础的时候,VS的学习一定是必不可少的。

    3. 实践

    编程是一门非常注重实践的学科,如果你不去亲自敲代码的话,那你永远也学不会。而博主也更愿意在邮件中针对具体的编程问题和大家讨论。

    这里推荐两个适合初学者编程练习的在线系统。

    北京大学 POJ | 杭州电子科技大学 ACM

    已经入门的朋友可以前去练习,有什么问题我们一起讨论。

    4. C语言知识结构

    C语言知识结构

    这幅图来自 bkdwei的博客

    今天就先到这里,最后想说一下,如果你对编程没有兴趣的话,那还是奉劝你不要在这里浪费时间了,相信这个世界上还有太多远比编程更适合你的事情等着你去体验。

    我是天花板,让我们一起在软件开发中自我迭代。
    如有任何问题,欢迎与我联系。


    下一篇:C语言从零开始(二)-Code::Blocks使用

    相关文章

      网友评论

      • 猫疏:当年的妹子如今已经杳无音信,而C语言的代码我一写就写了十年。🙃
      • kiki是一只猫:北大的poj不会用诶
      • 苍黄岁天:看到 谭浩强的书籍 我直接笑尿了。

        虽然讲的内容多,看多了,思维绝壁僵化。
      • a5df7ccf08c5:没兴趣就放弃,意思是这门课很难吗?可要是是此专业学生兴趣又不大呢,坚持还是放弃?
      • 追光一星:对,对编程没兴趣,确实可以止步了🙂人生,不只这一道风景
      • 素材火:大家一起来看c/c++视频教程学习吧
        http://www.sucaihuo.com/video/197-0-0
      • xiaobaicaishen:c++的有没有文章啊,我们入门学的是面向对象程序设计c++,,,😄
        天花板:@xiaobaicaishen 有啊
      • 4992da4698b9:我由于学安全,需要用到C,能给个完整学习路径和相关书籍吗,谢谢
      • qBryant:这个C系列的文章可以的。。。谢谢博主的分享。
        鄙人虽然coding有两三年了,但是C语言并没有深入的学习,一开始从Java上手干活的 😁
        希望能通过博主的C系列博客学习到更多的东西!
        天花板:@qBryant 加油吧:stuck_out_tongue_winking_eye:
      • 1c3d7f2cae9c:第一本书我在看,去图书馆翻了那么久,就那本书看着不费劲。
        1c3d7f2cae9c: @lucifeier 我大一
      • 叶舞清风:为了更好地理解object-C,所以还是要好好学习理解C语言
      • 56ddd3b80a86:天花板老师,我想跟你请教一下递归的问题。自己看了很久,处于一知半解的状态
      • 豆沙包_:我也是c的过来人,学习不深就误人子弟了

        自学PHP,前端,VB,Python,MySQL
        目前能用PHP开发维护站点,
      • 8b6e600260fa:对于现在的初学者,博主认为turb c和vs2010哪个更好?
        8b6e600260fa: @天花板 就是我用vs的c++写C吗?
        天花板:@墨九Rj 当然是VS
      • a1a80262267b:请问可以将编译器上传至网盘上吗
      • chosir:不错
      • 卫斯理和白素:我是一名高中学历的求学者,目前自己在上海一家嵌入式培训机构学习中,感觉很喜欢。😄创造改变世界。💿以后不会的还要请教您了。
        天花板:@卫斯理和白素 欢迎随时微信或邮件交流~
      • 就是那个布丁:谢谢了 暑假正好可以自己去看一些专业方面的书 谢谢你的分享
      • 墨汁薯条:感谢分享
      • e6c1380a0466:作者,我是学嵌入式技术与应用专业的,现在还有点迷茫对自己的未来,麻烦你可以和我交流交流么,给我多讲讲嵌入式
        e6c1380a0466: @天花板 额(⊙o⊙)…,我想加微博来着,但是好像说我你的微博异常,😊
        天花板:@昨日星辰昨夜风 欢迎交流,我的主页有邮箱和微信~
      • 70dd691313fd:ˉˉnumber numberˉˉ
      • 0ef1d419b92a:已疯啊 各种乱。。。就是毫无头绪。。。有头绪了又不会编
      • 0ef1d419b92a:那本绿的,是我的课本。
      • 一株胡桃木:现在正在补习C语言!谢谢楼主的分享!
      • bced89b34bbb:已经收藏了
      • 栀子Vanyong:大一新生,谢谢博主推荐:+1::+1::+1:
      • 李公子Alice34:正在看第二本推荐的,表示看的很慢。
      • 23d9877f3943:我是学信管的,大一大二学了c++和java,但对java不敢兴趣,对c++比较感兴趣,但也只是入门,想以后从事网络页面设计之类的,同时也想学程序设计,可感觉有点难,该学些什么???
        天花板:@艺起爱杰 网页设计最需要的是前端设计的知识。要学习HTML,JavaScript,CSS这三个是最基本的。之后最好会美工,最好再了解一些服务器知识,和流行的服务器设计框架。当然,你要一步一步来,从前三个开始吧
      • 117f1b42e670:有必要深入学习C语言吗?大一刚学完可感觉没有学透,怕忘了
      • Ys_HAN雨山:Mac版用什么编译器好呢
        天花板:@bff1682d553a 必须是XCode~
      • 151ba12c22e5:在osx环境下,xcode编译c是很爽的
        天花板:@timelessg Mac当然高大上了,可很多人买不起啊~
      • 柚纸姑娘:学习c语言可以用来考计算机二级吗?
      • 55e1239558fa:为家里那位码一个
      • 鱼鱼鱼羊羊羊:这个需要基础吗 我是传媒生 但比较有兴趣
      • f807fcd00593:谢谢作者的分享
      • baaad57a5b26:英文基础一般,能学吗?
        天花板:@ivancai 有中文版啊
        baaad57a5b26: @天花板 刚下了你推荐的软件,完全看不懂
        天花板:@baaad57a5b26 可以啊~
      • 橙子爱火龙果:当年也是一腔热情的报了班,最后觉得太难就放弃了,好不甘
      • e78548f8630e:文科生可以学c语言吗?
        天花板:@Hallo树先生 当然可以啦,只要有兴趣 :smile:
      • 7be45b415983:很爱作者的文章!对计算机编程也有兴趣,早就过了二级了,本专业不是计算机的,想问问作者,只是学了C语言本科毕业有对应工作可以做么
        7be45b415983:@天花板 我不打算考研,因为家庭原因,毕业后工作也是比较需要的,从理智来说,是否合适现在选择编程呢?
        7be45b415983:@天花板 我已经大三了、虽说有兴趣、可是对电脑的了解还停留在各种常用软件的操作比较不错、,自学C语言和Linux以及嵌入式什么的,会不会太晚
        天花板:@Dream丶Utopia C语言只是软件设计的基础,只学了C找工作会比较窄。如果对操作系统感兴趣建议学习一下Linux,再学点嵌入式开发的知识,这样可以找嵌入式开发或者服务器相关的工作。当然,任何用人单位都考察的是综合素质,光学一两门课是远远达不到要求的。
      • MountainBiker:0基础也行么
        天花板:@Jay20150520 文中提到的就是
        70a75def128f:@天花板 有哪些入门书好推荐吗?
        天花板: @MountainBiker 当然,从买教材开始吧~
      • 逸之:绝好的入门教材还有一本叫《21天学通C语言》,谭浩强的不可细读,广告打上: http://www.jianshu.com/p/158ce6e5b214
        豆沙包_: @逸之 本身书名就有问题,从不看此类书籍
        逸之: @s_shadow 不要因书的名字下结论
        豆沙包_: @逸之 21天学通的就不要误人子弟了
      • f169539d9360:我也是最近开始接触C语言的,感觉那些概念性的东西好难理解,看的稀里糊涂的,晕~~
        天花板:@南桦倾寒 入门是比较枯燥,加油
      • 日光灯:刚学,希望有帮助
      • e00ae0634c2a:我也刚学习😊 有方向了 高兴😄
      • 想很多小姐: @天花板 恩恩。谢谢:-D
        天花板:@Daisy__93 欢迎提出宝贵意见
      • ec56a3ef5331:谭浩强的那本第四版的早已经出来了。。。为何还推荐第三版
        逸之:@三生三世枕上书 大学都用谭浩强,其实《C Primer Plus》和《21天学通C语言》更棒,当然圣经必读。
        天花板:@三生三世枕上书 对这一版有感情了~ :smile:
      • 29b28cd9764c:谭浩强的书就真没必要推荐了
      • 7a7e17701c0a:支持一下
      • 9fd9f24af633:楼主,我喜欢学java然而这学期大二学数据结构,又要用c语言,我的c又是基础水平,感觉弄数据结构好麻烦0.0
        天花板:@Exaning 关于计算机语言高下的问题在业界争论了多年,如今语言种类越来越多更是辩不出个所以然来。说到底计算机语言只是工具,真正有价值的是人
        天花板:@9fd9f24af633 喜欢Java就好好学,Java诠释的数据结构教材也是有的,可以拿来看看。不过对于Java而言,很多基本的数据结构都有现成的类库可以用,不利于你了解数据结构真正的原理。如果你希望将来在软件开发方面继续发展的话,数据结构的基本知识你是绕不过去的。加油~
        29b28cd9764c:@9fd9f24af633 好好学Java吧,等你到了大三就会发现Java管用。
      • 随艺:我是数控专业的学生,我想了解关于C语言的内容,但我对此一无所知仅仅只是知道而已
        随艺: @Exaning 我就是想对程序编译有一些基本的认识
        天花板:@卐智行卐 数控专业不太了解,感觉不需要学C语言吧。如果有兴趣的话欢迎学习~
        29b28cd9764c:@卐智行卐 就算你学会了也没用,我就是计算机专业的,我们学c语言是为了体验“怎么学编程语言”这件事的过程,而不是将来真正要拿c语言干什么事情。不然为什么我们这个专业的学生还要学其他编程语言呢?
      • 小仙疯:我就想知道程序员能不能编个可以看加密QQ空间的软件
        1aadd68f9ee0:@cedde6138978 不能
      • 小仙疯:我就想知道程序员能不能编个可以看加密QQ空间的软件
        小仙疯:@天花板 哦
        天花板: @cedde6138978 这个可不是编程的范畴
      • atomic_volatile:有必要回味一下
        天花板:@阿童木online :smile:
      • d986d284aade:第一句不同意
        天花板:@大姨夫斯基 已经修改~
      • 9f624fa31096:大三学渣,重修C语言刚及格。。。女生学这个真的不感兴趣啊!😭😭😭
        天花板:@9f624fa31096 不敢兴趣就别强迫自己了
      • dfeb5e8969a5:电气自动化的飘过
        5af9a562cd1e:@二豆子 同飘过
        5af9a562cd1e:@二豆子 同飘过
      • 小仙疯:看完以后都想去学了😅
        天花板:@cedde6138978 哈哈,那我很有成就感
      • 正在下大雨:太好了
      • 想很多小姐:计算机的,都大三了。。。感觉啥也不会,也是忧郁Q_Q
        天花板:@Daisy__93 多练习就好了
      • OceanYT:大学时的教程就是经典蓝皮书。哈哈,现在是一名游戏🐶
      • 5006da180f08:加油,把知识传播的更远,更多。
        天花板:@阿夲 我会努力的
      • 5006da180f08:楼主,辛苦。
        天花板:@阿夲 谢谢
      • c7678333611c:很实用
        天花板:@苏柏亚 谢谢
      • 某妤:希望继续写,太需要了😂
        天花板:刚更新了一篇,欢迎阅读 :smile:
        某妤: @天花板 好!支持!😊😊😊
        天花板: @某妤 必须坚持,哈哈
      • d858a72c93f8:能不能给我讲讲动态链表的创建,看不懂啊,表示现在都大二了,JAVA也很差啊,还有就是JAVA里的接口,抽象类以及重写……他们的作用是什么啊,一直搞不懂啊
        d858a72c93f8: @天花板 好的,十分感谢!
        天花板:@d858a72c93f8 你的问题比较多,后面会针对这些问题发博文。如果着急,可以把具体的问题发邮件给我,我针对问题给你解答
      • 屿一:刚开始上课的时候真的觉得好难过啊,不过现在好了点,可是还是不会写程序,语法混乱😥
        屿一: @天花板 嗯啊!谢谢
        天花板: @木卡 欢迎把你困惑的题目或者代码邮件发给我,我们着重分析一下你的问题。其实并不难😊
      • 19a572b7ef5f:多谢!
      • 於愛擦肩:还是c,经典
      • 冻死在洋里的鱼:大学唯一挂了一科C语言
      • taoza:加油
        天花板: @天下独绝 谢谢
      • _Vincent:我学的专业也需要c语言,对于女孩子来说我觉得虽然很有意思,但好难懂
        豆沙包_: @_Vincent 兴趣是最好的动力
        天花板: @_Vincent 大部分学不好编程的女生都是因为没兴趣,如果你觉得有意思应该很快找到感觉
      • af629223819f:第三本同桌有
        af629223819f: @天花板 我就是偶尔看看,俺班有好几本呢
        天花板: @白白橙啊 那赶快借来看吧
      • 3f797bc1ae69:喜欢,对于大学狗来说实用
      • ba7c042ab848:非常实用,会持续关注。
        天花板: @Miss_美豆豆 谢谢支持
      • 844e41327c7c:数学不好,是不是很难学?好多函数看不懂😁
        844e41327c7c:@天花板 😊
        天花板:@844e41327c7c 编程和数学的关系不大,初中数学基础就够了
      • 1ba2d2ac74bf:用emacs写C~~哈哈, 打到VIM党 :sunglasses:
        天花板:@喷气火箭 emacs没用过,不过最终IDE才是王道,哈哈。
      • 2a10912b5ddb:能不能讲一讲java(●—●)
        天花板: @进击的小呵呵 Java的专题正在计划中,大概12月会讲。敬请期待。
      • 龙之子:从技术转到销售,对C以及C++,Java还是有很深感情的,个人感觉一定要结合小项目做,不然学来都不知道干嘛用,就会做几个考题,没用。
        天花板:@393e8a472700 你说的对,一个项目胜过N多考题~
      • 57f57dfa7720:学习了
      • 57f57dfa7720:学习了
      • dolohin:真的不要用谭浩强的那本书。。。真是害人不是一点点。
        天花板:@dolohin 当你发现谭浩强的问题时说明你已经到达一定的Level了,恭喜你。不过作为教材这本书还是有可取之处的。
        847b10dbedf3:@dolohin 表示学校用的教材就是谭浩强的
      • b99e0e2c6bde:看到第一本书我就呵呵了
      • 倪良伯:加油!为社会主义编程添砖加瓦!
        天花板: @小明明papapa 😃😃😃
      • 拥人自扰之:有点想学c语言,后悔当初在学校没好好学习,,,觉得这个很🐮
        拥人自扰之:@天花板 会的
        天花板: @小青鬼话 现在学习也不晚啊
      • 7fdaac47d9e9:不错
        天花板: @ZQLove 谢谢
      • 02b0c8c56beb:完全看不懂 大一新生每天都在学c语言 好痛苦
        天花板: @02b0c8c56beb 别着急,慢慢来
      • 1ad1c2474071:博主加油
        天花板: @吾以青春赌未来 谢谢
      • 杨小丑:支持支持!我就是大一新生,现在学编程特别痛苦。。。但是我真的想从事这个行业。。。
        天花板: @过客Y 加油,刚开始肯定会艰难一点,过了这段就好了。有问题欢迎交流
      • 73e7167a8f4d:太棒了
        天花板: @73e7167a8f4d 谢谢
      • 彭小六:为什么我们要学C语言?
        天花板: @喷气火箭 求具体攻略,嘿嘿
        1ba2d2ac74bf:@彭小六 学好C语言,开房不要钱。。。。 网上如是说道。。
        天花板: @彭小六 这个问题没有标准答案,如果想学总有各种各样的理由。当然,如果你只是为了通过考试……
      • 98de6272dda1:以前我是学习计算机的,谭校长的书乃是必读之物。
        天花板: @何小俊 😄
        98de6272dda1: @天花板 你还真是棒呢
        天花板:@何小俊 现在案头就有一本,十年了还会偶尔翻看,上面有当年做的笔记
      • 小强01:C语言学过 但是指针不是很懂
        天花板:@小强01 这个不方便留在这里,邮件里悄悄告诉你吧
        小强01:大牛 有别的联系方式吗?微信,QQ可否加一下好友!
        天花板:@小强01 指针其实并不难,后面会专门进行讲解,请继续关注。如果你有具体问题可以邮件讨论~
      • 07fabaf63054:我大一了,这辈子最喜欢的就是设计,c语言估计要学了
        天花板: @木秀于林2 学吧,相信C语言不会让你失望
      • 努力让自己变得更好:我大一的时候学校有C语言这门课不过教的不深,只有半年就没了,大一也是没认真学,关于C语言还是狗屁不懂,现在主学Java
        天花板: @努力让自己变得更好 C语音对于你更好地理解计算机程序工作原理是很有帮助的。Java的学习重点是面向对象。用哪个入门都可以,不过语言都是工具,到了数据结构和算法的层面就殊途同归了。

      本文标题:C语言从零开始(一)

      本文链接:https://www.haomeiwen.com/subject/ywzxhttx.html