写下这篇文章的目的是作为过来人想给初学者一些建议,本文没有涵盖C语言的方方面面,但是对于想入门的初学者来说足够了。另外需要说明的是,我不是大神,真正的大神是开发C语言标准,写标准库,写编译器的那帮人,但我自认为我的C语言掌握的比周围的很多人都要好,所以才敢写出这篇文章,写下这个标题。
想学一门编程语言,不知道学什么才好? 毫无疑问 C 语言啊。
C 语言是整个计算机体系的基础,往下可以操作硬件(不止X86计算机,还有ARM,DSP,单片机等各种微处理器)写Firmware,写驱动、写OS,写编译器,往上可以写 App,并且几乎所有的计算机书籍里的算法都是C语言描述的。
所以学会了 C 语言,就是掌握了软件领域的必备技能,以后再学其他的比如C++,Java,各种解释性语言、就是小 Case 了。
下图是一个网上流行的程序员“鄙视链”。其实我想说的是,还是有一定道理的,哈哈哈,笑而不语。
上课的模式是老师在上面讲,我们在下面听,然后就没有然后了,因为没有电脑练习,我根本就没有机会在课下了解更多的东西。学完了一本书,C 语言是干嘛的我都不知道,那个时候我并不知道 C 语言是用来写软件的,更何况别说软件了,电脑都没怎么见过。
我们当初用的教材名字叫 《VC++ 语言程序设计》,这导致我很长一段时间都没不知道VC++,和 C++, C 的区别,OMG!!
我认真地从头到尾翻了一遍H.M.Deitel 的那本 C++,有了电脑简直如虎添翼,我有阵子天天在宿舍编程。对了,我是在学习C++的时候,顺带学习(复习)的 C 语言,反正 C++ 的书上总有会 C 的。
这里是我总结的学习 C 语言的几个步骤,其他编程语言基本类似,希望对大家有所帮助。
1. 看书
电子书
学习一门编程语言少不了先学习基本语法。
C语言的语法也就是变量,数组、指针、表达式、逻辑操作、函数,宏定义等等。学习这些先买一本入门级书籍,其实大都差不多,最经典的就是谭浩强的那本了,虽然在知乎上没少被人黑,但是流行了这么多年,总归是有可取之处的,其实作为入门书,你不能指望从它里面得到你想知道的所有东西。
除了基本语法,C 语言另一部分是标准库。
这一点很少被C语言入门书提及,但是你要想写出一个像样的程序的话,标准库必不可少。推荐这本世界级C语言专家编写的《C标准库》。
2. 写代码练习
要想学好一门编程语言,看书远远不够,一定要把书里的代码搬到电脑里。
相信大多数人都是使用的Widnows,那么就下载安装一个Visual Studio吧,用哪个版本?最新的 VS2017 毋庸置疑。
喜欢 Linux 的朋友,就先下载 Glibc 库,然后安装 gcc, gdb。
好了,有了开发环境,接下来一切变得简单,并且好玩。
试着写一些简单的代码,比如 Hello World,文件读写,数学操作,常用算法,等等。
这是我以前练手时写的
3. 总结心得体会
把你觉得很抽象、难以理解的东西放到 VS 里面进行调试,会有很多发现。我以前电脑里就经常会有一个名字叫 Test 的工程文件夹,哪里有疑惑了,就把代码放进去,一 Debug,全部的疑云就解开了。
比如这样,了解 Struct 内存结构
比如这样,了解 Union 的内存结构
比如这样,了解 指针和数组
然后把这一切,记录在一个 Word 中,这样知识就变成自己的了。
4. 写个小作品基本知识掌握的差不多了,试着写个小程序。
看着人生第一个自己开发的程序,会有很多的成就感,并且在写程序的过程中,你的编程能力会有质的飞跃。
我曾经写过一个控制台的五子棋游戏,可惜年代久远,现在已经打不开了。
另外需要说明的是,想在 Windows 上写一个有界面的程序的话,还需要学习Windows API,不过这仿佛是 C 语言之外的东西了,单单学习 C 语言,一个控制台程序就够了。
最后一句话作为总结:想要你的编程能力突飞猛进,一定要勤加练习。
想学习的关注公众号:C语言学习俱乐部