linux 下C语言学习路线




UNIX/Linux下C语言的学习路线。
1、工具篇
“公欲善其事,必先利其器”。编程是一门实践性很强的工做,在你之后的学习或工做中,你将经常会与如下工具打交道, 下面列出学习C语言编程经常用到的软件和工具。

一、操做系统

    在UNIX或Linux系统中学习C很方便,因此在开始您的学习旅程前请先选择一个UNIX或Linux操做系统,目前可供我的无偿使用的UNIX或Linux系统有FreeBSD、RedHat Linux、SUSE Linux等,并且在安装包中还提供不少实用的工具,如:gcc, make等。

    若是您一直使用Windows,身边又没有多余的机器安装UNIX,则可使用VMware,经过VMware安装虚拟系统。

二、编译工具

    目前绝大多数Unix或Lnux系统都提供CC或GCC编译器,最简单的cc命令格式以下:

    cc -o hello hello.c

    在unix shell环境中敲入上面的代码会将hello.c程序编译成可执行文件hello。

三、make工具

    如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,可是每一个 make 工具之间又有所不一样。

    大部分UNIX和Linux程序都是经过运行make来编译的。

    make工具会读取一个包含指令的文件(这个文件的名字一般都是 makefile 或 Makefile,不事后文中咱们统一称之为 “makefile”),并执行各类操做来编译程序。

四、调试工具

    最简单的调试工具:为你的程序添加打印语句,在你对程序的运行机制有了必定的了解后,你能够实用一些工具帮助你进行调试,固然你得学习一下这些工具得使用,如:dbx,gdb等。

    还有一些内存工具能够帮你查找内存泄漏或缓冲区溢出等一些问题,如:memwatch,yamd等。

五、其余工具

    1)vi或vim

    Unix下文本编辑器。主要靠一堆命令来编辑文本文件,学Unix编程最好熟悉并熟练使用vi编辑器。

    固然在实际工做中,你可能须要一个集成编码环境或一个功能强大的图形化编辑工具。

    提供一个中文的vim在线手册:http://vcd.gro.clinux.org/

    2)Secure shell/putty
    一个支持ssh协议得客户端工具,多数状况下用来链接linux系统。

2、书籍篇

“书是人类进步得阶梯”。学习一门新的知识,固然要选择几本适合本身得书籍,下面介绍一些我本身学习C语言使用过的书籍:

1.《C primer plus》
推荐理由:适合做为入门书和基本函数查询得参考资料。本书最新版为第五版,以ANSI C99为标准详细介绍了C语言。


2.《The C programming_Language》
推荐理由:C语言之父得做品权威性毋庸置疑。虽然书籍出版时间比较老,好像也没更新,不过仍不失为经典书籍,网上有这本书得英文电子版提供下载。

3.《C 专家编程》
推荐理由:本书能够帮助有必定经验的C程序员成为C编程方面的专家,最关键的是本书寓教于乐,让你充分享受编程的乐趣。

4.《C缺陷与陷阱》
推荐理由:书中所揭示的知识能帮助您绕过C语言自身得陷阱和缺陷,减小代码中许多常见的Bug。

5.《unix环境高级编程》

推荐理由:既然是UNIX环境下C编程,就不得不说说UNIX编程书籍。

Stevens先生的《unix环境高级编程》是我竭力推荐的,也是个人案头必备(若是对网络编程有兴趣的,能够学习一下Stevens先生的《UNIX网络编程》两卷,若是以为还不过瘾,能够再看看《TCP/IP详解》三卷)。

6.《计算机编程艺术》
推荐理由:算法大师得呕心沥血之做。计划出版五卷书,目前好像已出版3卷。对算法有兴趣得能够研究一下。

3、过程篇

1.学习C语法

    语法的学习对于一个具备编程底子的来讲,就很轻松了;即便你之前没有学习过其余编程语言,我相信有2个星期,你也能轻松搞定。

    须要注意的是,不要太纠缠于语言的细节,好比:运算符优先级与结合性的问题等。

2.学习C标准库

ANSI C库把函数分为不一样的组,每一个组都具备与之相关的头文件。C语言标准库相对于其余语言,好比C++,Java来讲是很是短小精悍的,但首先应着重对如下库进行学习:

ctype.h:字符处理

math.h:数学库

stdio.h:标准I/O库

stdlib.h:通用工具库

string.h:字符串处理

time.h:时间和日期

若是想了解完成的ANSI C库,你能够购买相关的书籍,这些书籍通常会详细介绍每一个函数的用户和一些注意点;固然你也能够登录http://www.dinkumware.com/manual ... amp;page=index.html获取ANSI C库详细信息。
 
3.攻克C的难点

1)C语言声明:
  C语言的声明确实让我以为恐怖,比较晦涩难懂,并且声明的形式和使用的形式还相似。好比以下的声明恐怕就连不少熟悉C多年的程序员也不是一眼就能看出来的:
  char * const * (*next)();
  那么有没有一种好的记忆方法或规则来搞清楚呢,好像没有,若是有的话也不是这样折磨人了。不过能够看看《C专家编程》第三章的内容,或许你会有所收获。
  也只能多学多练了,所谓熟能生巧嘛,但愿这个问题不要在你的心灵上留下阴影。  

2)数组与指针:

  数组与指针的关系,在标准中并无做很详细的规定,并且好多C入门的书籍在这个问题上并无给出很详细的说明,因此会给人形成不少误解。

  对于这个问题,你能够参考《C缺陷与陷阱》4.5节和《C专家编程》第4,9,10章,相信你这里面的内容搞透彻,之后就不会再被这个问题搞迷惑。

3)指针与内存:

  若是你之后编写规模较大的程序,你可能发现这个问题可能会是你最大的烦恼,并且可能会是你消耗最多调试时间的事项。

4)C版本的问题:

   你得特别当心该问题,最好不要在你的程序中混合使用不一样版本C的特性,不然会给你带来很迷惑的问题。若是必定要用,你最好清楚本身在作什么。

还有一些其余C中的难点和容易错误的地方,能够学习前人的一些经验。如下是一个c FAQ的连接地址,相信在这篇文档中有你须要的大部分问题的解决方法。

http://c-faq-chn.sourceforge.net/

4. UNIX环境编程

    学习了以上内容以后,我相信,你就能够进行unix环境编程了。不过你可能须要对操做系统理论有一点点的了解,这样学起来会比较轻松一些。

    Unix环境编程,你应该着重IO和进程两大块内容。

   《Unix环境高级编程》中对Unix环境编程有着很是详细且深刻的论述,并且书中有大量实用性例子程序,不过可能得花上几个月得时间,好好啃一啃了。
    在扎实掌握以上内容,不表明你得C语言学习支路已经完成,相反,才刚刚开始。之后你须要用学到得知识去解决大量不一样实际问题,在不断得实践过程当中,你会近一步加深对C的理解。有了以上基础以后,你会发现,在实践过程当中须要的其余知识,你会很是快速的掌握。html

相关文章
相关标签/搜索