`
javatoyou
  • 浏览: 1069414 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

UNIX/Linux下C语言的学习路线

 
阅读更多

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

1、操作系统

在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统,目前可供个人免费使用的UNIX或Linux系统有FreeBSD、RedHat Linux、SUSE Linux等,而且在安装包中还提供很多实用的工具,如:gcc, make等。

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

2、编译工具

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

cc -o hello hello.c

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

3、make工具

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

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

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

4、调试工具

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

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

5、其他工具

1)vi或vim

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

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

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

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

二、书籍篇

“书是人类进步得阶梯”。学习一门新的知识,当然要选择几本适合自己得书籍,下面介绍一些我自己学习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卷。对算法有兴趣得可以研究一下。


三、过程篇

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的理解。有了以上基础之后,你会发现,在实践过程中需要的其他知识,你会非常快速的掌握。

分享到:
评论

相关推荐

    UNIX/LINUX下C语言中文短信UCS2编码和解码函数源码

    unsigned char *str="新年快乐,Linux"; unsigned char ucs2str[1024],gbkstr[1024]; int len,i; len=EncodeUCS2(str,ucs2str); ucs2str[len]=0; for(i=0;i;i++ ) printf("%02X",ucs2str[i]); printf("\n");...

    Understanding Unix/Linux Programming

    总的来说,《理解Unix/Linux编程》不仅是学习操作系统原理的教材,也是提高C语言编程能力的良好资源。书中的练习和光盘资源提供了丰富的实践机会,对于任何希望在Unix/Linux环境中开发软件的人来说,都是不可或缺的...

    UNIX/LINUX及其使用环境

    实验报告——UNIX/Linux及其使用环境 ...通过这个实验,学生不仅能掌握UNIX/Linux操作系统的日常使用,还能深入理解软件开发流程,尤其是C语言的编写、编译和调试,这对后续的系统级编程和软件开发有着重要的实践意义。

    Unix-Linux编程实践教程(中文清晰带书签).pdf

    《Unix-Linux编程实践教程》是一本面向程序员和系统管理员的实用指南,旨在通过丰富的实例深入浅出地介绍Unix和Linux环境下的系统级编程技术。这本书涵盖了从基本的命令行操作到复杂的系统调用和库函数的使用,是...

    Unix/Linux 编程实践 附录光盘

    在Unix/Linux环境下,用户可能还需要了解如何安装和使用这个软件来查看光盘上的PDF文档。 最后,ReadMe.txt文件是常见的说明文件,它通常提供关于光盘内容的基本信息、使用注意事项或系统要求,对于初学者来说是...

    linux下C语言开发笔记整理

    Linux下C语言开发笔记整理涵盖了从基础知识到网络通信的多个方面,主要围绕在Unix/Linux系统环境下使用C语言进行软件开发的各项...通过这门课程的学习,开发者应该能够熟练地在Unix/Linux环境下使用C语言进行软件开发。

    Unix和Linux下C语言学习指南.docx

    在Unix和Linux环境中学习C语言是一项基础且重要的任务,因为这两种操作系统提供了丰富的工具和资源,使得C语言的开发和调试更为高效。C语言虽然历史悠久,但至今仍然被广泛使用,尤其在系统级编程和嵌入式领域。这篇...

    Understanding unix/linux programming源代码

    《理解Unix/Linux编程源代码》是Bruce Molay撰写的一本实战型教程,旨在帮助读者深入理解和掌握Unix/Linux系统下的编程技巧。这本书通过丰富的实例和源代码解析,将复杂的系统编程概念化,使得初学者和有经验的...

    UNIX/LINUX编程实践教程的源码

    首先, UNIX/Linux编程的核心是C语言,因为这两种系统的API主要是用C语言设计的。源码中可能会包含大量与系统调用、标准I/O库、进程控制、信号处理、文件操作等相关的内容。例如,`fork()`用于创建子进程,`execve()...

    unix/linux下c/c++ 函数速查手册

    在Unix/Linux环境下,C和C++编程是系统级开发的核心技术。这个"UNIX/Linux下C/C++函数速查手册"提供了全面的C和C++函数参考,帮助开发者快速找到所需的函数信息,提升开发效率。以下是一些关键的知识点: 1. **...

    Unix/Linux C编程函数大全(完整版)中文版

    "Unix/Linux C编程函数大全(完整版)中文版"是一份宝贵的资源,它为开发者提供了深入理解和使用Unix/Linux环境下的C语言函数的详细指南。这份中文版的文档对于学习者来说尤其友好,因为语言障碍被消除了,使得理解...

    UNIX/LINUX平台C函数库手册

    这篇手册详细介绍了这些函数库,是C语言学习者和实践者的重要参考资料。下面将对其中的关键知识点进行深入阐述。 1. **C语言基础**: C语言是一种强大的、低级别的编程语言,被广泛用于系统编程、嵌入式系统以及...

    UNIX/LINUX material

    "UNIX/Linux material" 提供了关于这两种系统的详细资料,帮助学习者深入理解和掌握其核心概念、命令行操作以及系统管理技能。这篇材料可能是针对初学者,也可能是为了进阶用户提供的参考资料。 首先,让我们探讨...

    unix/linux C/M/S模型课程设计

    总的来说,这个课程设计旨在让学生掌握UNIX/Linux环境下的并发编程和进程通信技术,通过实际操作理解C/M/S模型的工作原理,并能运用到实际问题中,如模拟手机缴费系统。这不仅锻炼了编程技能,还提升了系统级编程的...

    Unix/Linux C/C++编程学习

    同时学习LINUX和C/C++ Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式...

    c语言 在unix/linux 里运行的pwd指令

    用c语言 在unix linux下运行pwd 指令

    精通UNIX下C语言编程与项目实践+源代码+笔记.zip_C语言项目linux_Linux/Unix编程_Linux下的c语言开

    标签揭示了其主要内容:C语言在Linux和UNIX环境下的应用,以及Linux下的C语言开发和项目经验。 首先,C语言是UNIX系统的基础,因为UNIX最初就是用C语言编写的。学习在UNIX环境下编写C程序,意味着要掌握C语言的基本...

    黑马培训 c++24期里的部分 Unix/Linux环境使用 (基础篇)

    ### 黑马培训 C++24期中的Unix/Linux环境使用(基础篇)——关键知识点解析 #### 一、操作系统概述及作用 - **操作系统的作用**: - **方便性**:简化用户与...这对于学习和掌握Unix/Linux环境的使用至关重要。

    unin/linux编程实践教程

    2. **文件系统与I/O操作**:了解UNIX/Linux下的文件系统结构,如目录、文件权限、硬链接和软链接等。同时,掌握打开、读写、关闭文件等基本I/O操作,以及标准输入输出和重定向的概念。 3. **进程管理**:理解进程的...

Global site tag (gtag.js) - Google Analytics