对于C语言的学习,不同的人有不同的经历和不同的方法,当中许多方法都具备相对完整的步骤和不错的功效。然而事过境迁,多年以后回头看看走过的路,却很难理顺当初所留下的痕迹。培训新同事或者是在CSDN上解答问题的时候,发现当中有些不错的苗子,由于缺乏适当的引导,最终会很长一段时间陷入不必要的泥潭之中。这可以说是作者写下这篇文章的出发点,希望能让新手学习C语言的时候不再那么迷惘和彷徨。

上梁不正下梁歪,选书非常关键,直接涉及到基础和底子正不正。作者推荐Stephen Prata大师所著的《C Prime Plus》,套路很正内容翔实,同时涉及到标准和平台兼容性的讲解,看完之后还可以一直把它作为参考书籍放在身边。具有强烈中国特色的谭某某的流行教材,可以直接扔到垃圾桶,那是教育垄断下的畸形产物,容易走火入魔。

工欲善其事,必先利其器,选择编程环境也是非常重要的。作者推荐Ubuntu/Vim/GCC/GDB组合,Ubuntu是Linux操作系统的杰出代表,Linux与C语言是无缝结合的,另外也考虑到新手在Windows平台上,很难静下心来练习,难以抵抗游戏的诱惑和病毒木马的骚扰。Vim是最强大的代码编辑器之一,而且是随手可得,不过有一定的学习门槛,如果暂时未下定决心的话,那么可以先暂时用Gedit来编写代码。GCC是非常强大的跨平台编译器,对C语言的标准支持的非常到位,不像VC那样,总喜欢加一些另类的规则。GDB是和GCC配合的跨平台调试器,用简洁的指令就可以完成调试。萝卜芹菜,各有所爱,对于时间有限或者只对GUI有兴趣的新手来说,还有一种不错的选择,就是直接用Code::Blocks集成开发环境。Code::Blocks是开源跨平台的C/C++集成开发环境,可以从http://www.codeblocks.org下载,它体积小巧却功能强大,对Linux和Windows系统它都是支持的。

在C语言的学习过程之中,始终不要忘记欲速则不达的道理,书要一页一页一个字一个字的看,习题要踏踏实实的做。对新手而言,学习《C Prime Plus》的平均速度不要超过一个星期一章,一些重点的章节最好要多于两个星期的研究。在C语言的学习过程之中,难免会遇到各种各样的问题,可以请教朋友或者是在CSDN上提问。新手提问切忌过于依赖别人,比如像“指针如何理解”、“谁来帮我写一个数据结构”之类的问题,别人很难真正理解你的需求。提问之前最好先多思考一下,毕竟是你自己需要解决疑惑,提问的时候尽量缩小所涉及的范围,比如像“如何把IP字符串转为in6_addr类型”、“头文件中为什么总要加上#ifndef/#define/#endif这样的宏语句”这样的提问就很到位。

不是每个问题都能直接从别人那边得到满意的答案,也要逐步学会自己查资料。首先通过Google来寻找方向和线索,百度就算了,查八卦信息还行。然后通过维基百科进一步细化,最后查看具体函数的详细资料。查看函数资料可以在http://www.kernel.org/doc/man-pages/和http://msdn.microsoft.com/zh-cn/ms348103.aspx直接搜索,也可以在Linux下输入man 3加函数名来查找。

遵循以上的学习步骤和方法,你一定可以完成新手的蜕变,作者也相信你一定会要爱上C语言的!最后补充两句,整个学习过程是不会用到Makefile的,它可以放在以后再研究。也有人会问,那么C++又当如何,很简单的说,把书换成《C++ Prime Plus》,然后用G++代替GCC就可以了。

介绍给新手的一种C语言学习方法相关推荐

  1. 介绍一些新手入门FPGA的优秀网站(新增4)

    介绍一些新手入门FPGA的优秀网站(新增4) 之前有分享过<HDLBits>这个对于入门非常好的网站(学会使用Hdlbits网页版Verilog代码仿真验证平台),今天在推荐给大家一些优秀 ...

  2. 掌财社:新手学习嵌入式用什么语言编程?

    随着AI智能产品的出现,市场上对于嵌入式开发人员需求也越来越多,嵌入式系统成为了一个很时尚的名词,应用范围也相当的广泛,很多人都想入行嵌入式,那么,学习嵌入式用什么语言编程?这个对于新手来说是一个比较 ...

  3. 编程语言发展70年,用50种不同语言输出「Hello World」

    「免费学习 60+ 节公开课,投票页面,点击讲师头像」 作者 | Sylvain Saurel 译者 | 风车云马 责编 | 屠敏 [导读]历经 70 年,不断出现的编程语言为开发者解决了哪些难题?其 ...

  4. 哪种脚本语言最适合你!

    本文译自 iSystemAdmin 的 <List Of Popular Scripting Languages for Linux and Windows>. 具备脚本知识的系统管理员与 ...

  5. 02_python是一种什么语言?

    python是一种什么语言? 1.低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列 ...

  6. scala语言的底层是java实现的_2020了,每个程序员都该学习的 5 种开发语言

    我曾在某处读到过(可能在<代码大全>,但我不敢确定),程序员应该每年学习一门新的编程语言.但如果做不到,我建议,你至少学习以下 5 种开发语言,以便你在职业生涯有很好的表现. 每个公司都喜 ...

  7. 语言列表导出xlxs_学习五分钟,掌握一种新语言。

    有没有一种语言,既实用还能够短时间内学会并应用起来?当然有.小阳今天要教给大家的是一种标记语言--Markdown. 经常上网的你,一定有注意到很多网页排版整齐.简洁优美,各级标题区分明显,文章逻辑清 ...

  8. elixir开发的项目_我对Elixir的介绍:学习另一种编程语言如何使您成为更好的开发人员...

    elixir开发的项目 by Nikolas O'Donnell 由Nikolas O'Donnell 我对Elixir的介绍:学习另一种编程语言如何使您成为更好的开发人员 (My intro to ...

  9. YAML,另一种标记语言?不止是标记语言!

    早先的文章<Kubernetes入门实践--部署运行Go项目>里我们使用YAML定义了Deployment对象,Kubernetes推荐的使用方式也是用一个YAML文件来描述你所要部署的 ...

最新文章

  1. Python 之 matplotlib (十五)主次坐标轴
  2. SHELL学习 续2
  3. python基础知识面试题-干货满满--亲身经历的 Python 面试题
  4. Android自动化测试之MonkeyRunner
  5. 2021全国计算机二级知识点,2021年度Dlypeq全国计算机等级考试二级公共基础知识点总结.doc...
  6. eclipse写javaee的时候js文件新增函数找不到
  7. 【工作手札】日常工作笔记
  8. 【工具篇】OBS推流在Bilibli直播平台的设置和应用
  9. 机器学习之多种算法优缺点总结及优化方法
  10. Ubuntu16.04拨号上网
  11. 停止mysql服务的运行_启动和停止MySQL服务
  12. 8个优秀的CSS实践,超详细
  13. 拉格朗日乘子法——从单约束到多约束的直观翻译
  14. 四川文科高考300分可以上什么专科
  15. 彻底删除Navicat注册表
  16. 自动生成了个登录界面
  17. 渐进式复杂度分析-学习笔记
  18. Visual GDB不能在线调试,出现Received a SIGTRAP:Trace/breakpoint trap
  19. android l 论坛,同步更新魔趣源码Android-L编译
  20. 库克是出色的苹果CEO 这六点可以证明

热门文章

  1. oracle oltp和olap,OLTP与OLAP概念、主要区别和完美实践
  2. [附源码]计算机毕业设计在线图书销售系统Springboot程序
  3. 郑豪7.26黄金早间价格涨跌走势分析,黄金开盘多空思路操作建议,黄金现价单
  4. linux 微代码下载,英特尔放出Linux微代码以修复Meltdown和Spectre漏洞
  5. 五大举措助力广东金融高新区打造金融科技创新与应用高地
  6. 领峰:国内现货白银交易平台哪些可以选择开户
  7. Fragment懒加载——最简方案(LazyBread)
  8. Control.Invoke()和Control.BeginInvoke()
  9. Math.random().toString(36)使用--- 随机生成数字与字母的组合
  10. Dubbo的Reference注解必须先启动provider的问题