我是如何学习 C 语言的

想学一门编程语言,不知道学什么才好? 毫无疑问 C 语言啊。
C 语言是整个计算机体系的基础,往下可以操作硬件(不止X86计算机,还有ARM,DSP,单片机等各种微处理器)写Firmware,写驱动、写OS,写编译器,往上可以写 App,并且大部分的计算机书籍里的算法都是C语言描述的。
所以学会了 C 语言,就是掌握了软件领域的必备技能,以后再学其他的比如C++,Java,各种解释性语言,相对来说就会容易很多。

我初学 C 语言是在 2005年大二,那个时候,上课的模式是老师在上面讲,我们在下面听,然后就没有然后了,因为没有电脑练习,我根本就没有机会在课下了解更多的东西。学完了一本书,C 语言是干嘛的我都不知道,那个时候我并不知道 C 语言是用来写软件的,更何况别说软件了,电脑都没怎么见过。

我们当初用的教材名字叫 《VC++ 语言程序设计》,这导致我很长一段时间都没不知道VC++,和 C++, C 的区别,OMG!!
对 C 语言的深入学习是在研究生期间,我认真地从头到尾翻了一遍H.M.Deitel 的那本 C++,有了电脑简直如虎添翼,我有阵子天天在宿舍编程。对了,我是在学习C++的时候,顺带学习(复习)的 C 语言,反正 C++ 的书上总有会 C 的。

这里是我总结的学习 C 语言的几个步骤,其他编程语言基本类似,希望对大家有所帮助。

1. 看书

学习一门编程语言少不了先学习基本语法。
C语言的语法也就是变量,数组、指针、表达式、逻辑操作、函数,宏定义等等。学习这些先买一本入门级书籍,其实大都差不多,最经典的就是谭浩强的那本了,虽然在知乎上没少被人黑,但是毕竟流行了这么多年,总归是有可取之处的,其实作为入门书,你不能指望从它里面得到你想知道的所有东西。
除了基本语法,C 语言另一部分是标准库。
这一点很少被C语言入门书提及,但是你要想写出一个像样的程序的话,标准库必不可少。推荐这本世界级C语言专家编写的《C标准库》。
我是如何学习 C 语言的 - 图1

2. 写代码练习

要想学好一门编程语言,看书远远不够,一定要把书里的代码搬到电脑里。
相信大多数人都是使用的Widnows,那么就下载安装一个Visual Studio吧,用哪个版本?最新的 VS2017 毋庸置疑。
喜欢 Linux 的朋友,就先下载 Glibc 库,然后安装 gcc, gdb。
好了,有了开发环境,接下来一切变得简单,并且好玩。
试着写一些简单的代码,比如 Hello World,文件读写,数学操作,常用算法,等等。
这是我以前练手时写的
我是如何学习 C 语言的 - 图2

3. 总结心得体会

把你觉得很抽象、难以理解的东西放到 VS 里面进行调试,会有很多发现。我以前电脑里就经常会有一个名字叫 Test 的工程文件夹,哪里有疑惑了,就把代码放进去,一 Debug,全部的疑云就解开了。
比如这样,了解 Struct 内存结构
我是如何学习 C 语言的 - 图3

比如这样,了解 Union 的内存结构
我是如何学习 C 语言的 - 图4
比如这样,了解 指针和数组
我是如何学习 C 语言的 - 图5

然后把这一切,记录在一个 Word 中,这样知识就变成自己的了。

这是我从前总结的一个文档
我是如何学习 C 语言的 - 图6

4. 写个小作品

基本知识掌握的差不多了,试着写个小程序。
看着人生第一个自己开发的程序,会有很多的成就感,并且在写程序的过程中,你的编程能力会有质的飞跃。
我曾经写过一个控制台的五子棋游戏,可惜年代久远,现在已经打不开了。
另外需要说明的是,想在 Windows 上写一个有界面的程序的话,还需要学习Windows API,不过这仿佛是 C 语言之外的东西了,单单学习 C 语言,一个控制台程序就够了。

最后一句话作为总结,想要使自己的编程能力突飞猛进,一定要不断地勤加练习。