c语言linux编程书籍(linux中c语言编程)

http://www.itjxue.com  2023-03-20 16:38  来源:未知  点击次数: 

初学者学习C语言,用什么书好,想用点比较经典的书。

学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何让编程初学者以最小的代价学习并精通C语言是本文的主题。请注意,即使是最小的代价”也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着各位编程初学者需要经历艰苦的过程。

一、要读就读好书,否则不如不读

所有初学者面临的第一个问题便是如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。

1. 《C程序设计语言》

Kernighan和 RitchiTheCProgramLanguag的《C程序设计语言》堪称经典中的经典,不过旧版的很多内容都已过时,和现在标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。

2. 《C语言参考手册》

即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》十分必要的C语言参考手册》就是CReferManualC语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的C程序设计语言》根据C89标准修订的而《C语言参考手册》描述的C99标准,二者可能会有些出入,建议按照C99标准学习。

3. 《C和指针》

这本《C和指针》写得也是相当地不错,英文名是PointeronC特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。相信,只要你理解了指针,C语言便不再神秘。

4.如果你已经看完一本C语言教材,并想要继续深入学习,那么我有两本书推荐给你

《C陷井与缺陷》

首先这本CTrapandPitfal的《C陷井与缺陷》,很薄的一本书,内容非常非常地有趣。不过注意的是,这本书是二十多年前写的,里面提到很多C语言的缺陷现在都已被改进,不过能够了解一些历史也不是什么坏事。

《C专家编程》

还有就是可以尝试挑战一下ExpertCProgram的《C专家编程》,书如其名,这本书颇具难度,不过一旦你仔细读完并能透彻理解,便可以放心大胆地在简历上写“精通C语言”

切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。

二、Unix/Linux还是Window这是个很大的问题

不同的编程环境会造就出不同思维的程序员。Window程序员大多依赖集成开发环境,比如VisualStudio而Unix程序员更加钟爱Makefil与控制台。显而易见,集成开发环境更容易上手,Window上学习C语言,只需要会按几个基本的VisutC++工具栏按钮就可以开始写Hello,World!而在Unix下,需要一些控制台操作的基本知识。有人也许认为Unix环境更简洁,但习惯的力量是很大的大家都很熟悉 Window基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。

对于一个只懂得Window基本操作、连 DOS什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的用C语言写一个小程序远比学习lscat等命令有趣,况且我要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefil写法等等等等。

所以我建议初学者应该以VisualC++6.0不是VisualC++.NET或者DevC++作为主要的学习环境,而且千万不要在IDE使用技巧上过多纠缠,因为今后你一定要转向Unix环境的VisualC++6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而DevC++使用gcc编译器,对C99标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用TurboC2.0作为实验环境,这是相当不可取的原因其一是TC2.0对C标准几乎没有支持,其二是TC2.0编译得到程序是16位的这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC2.0编译出32位程序,不过那过于复杂了

等你学完一本C语言的教材,一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的比如《C专家编程》转变的过程是痛苦的需要面对的各种纷繁复杂的命令,完全不同于Window平台的思考方式,但是这种痛苦是值得的Unix与C共生的Unix思考方式和习惯更加符合C语言的思考方式和习惯。Unix下,可以找到无数优秀的源代码供你尽情阅读,可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,会专门写一篇文章详细叙述)

归结起来就是一句话:编程初学者初学C语言,建议使用Window系统和集成开发环境,准备向“高手”方向努力时,请先转向Unix平台。

嵌入式学习书籍有哪些?

以下是华清远见·星创客嵌入式精英训练营提供的学习嵌入式必看的100本书:

001《大话数据结构》

002《鸟哥的 linux 私房菜》

003《疯狂 android 讲义》

004《第一行代码》

005《linux 内核设计与实现》

006《驱动设计开发》

007《linux 内核解密》

008《unix 环境高级编程》

009《linux 内核设计与实现》

010《essential C++》

011《嵌入式 linux》

012《linux 设备驱动》

013《c 语言深度解剖》

014《linux 下的 c编程》

015《C Primer Plus(第五版)》

016《ARM 体系结构与编程(第二版)》

017《lINUX 设备驱动开发详解(第三版)》

018《android 开发艺术探讨》

019《c++plus》

020《Unix 环境高级编程》

021《与大数据同行——学习和教育的未来》

022《用户体验的要素》

023《编程与艺术》

024《ARM 嵌入式体系结构与接口技术》

025《cortex-m0 接口编程》

026《C 语言程序设计:现代方法》

027《C++ Primer》

028《数据结构》(严蔚敏)

029《算法导论》

030《Linux 设备驱动开发》

031《代码大全》

032《深入理解计算机系统》

033《UNIX 环境高级编程》

034《计算机安全原理》

035《UNIX 网络编程》

036《HeadFirst 设计模式》

037《linux 驱动》(宋保华)

038《C++ primer4》

039《qt5 精彩实例》

040《ldd3》

041《C++高级编程》

042《C语言教程》

043《实战 linux 编程精髓》

044《ARM 教程》

045《JAVA 编程思想》

046《HTML+CSS 网页设计与布局从入门到精通》

047《C 语言深度解剖》

048《深度实践嵌入式 Linux 系统移植》

049《unix 高级编程》

050《c 嵌入式一站式教学》

051《编译原理》

052《深度实践嵌入式 Linux 系统移植》

053《UNIX 环境高级编程》

054《linux 网络编程》

055《C 语言程序设计》

056《unix 环境高级编程》

057《嵌入式 linuxc 语言程序设计基础教程》

058《Java 编程思想》

059《TCP/IP 详解》

060《linux 技术手册》

061《C 语言深度剖析》

062《Unix 高级环境编程》

063《C++primerplus》

064《QT》

065《C 程序设计》

066《C 和指针》

067《C++primer》

068《C 程序设计语言》

069《ProgrammingC#》

070《thinking in C++》

071《Linux Device driver》

072《Linux kernel development》

073《软件工程》

074《C 和指针》

075《Android 核心代码》

076《Android 技术内幕》

077《Android 底层移植》

078《Unix 编程手册(上下卷)》

079《Linux 驱动设计第三版》

080《ARM 实战开发》

081《unix 环境高级编程》

082《tcp/ip 编程详解》

083《Linux 网络编程》

084《Unix 编程艺术》

085《计算机程序的构造和解释》

086《C Primer plus》

087《LINUX 权威指南》

088《LINUX 设备驱动程序》

089《The C Programming Language》

090《ajax 高级程序设计》

091《angula js 权威教程》

092《ARM 体系结构》

093《Unix 环境高级编程》

094《Linux 设备驱动程序》

095《现代操作系统》

096《TCP/IP 协议详解》

097《嵌入式 C 语言设计模式》

098《Struts In Action》

099《c 程序设计语言(第二版)》

100《深入理解 Linux 内核(第三版)》

我想学Unix/Linux(公司现在用Unix作服务器,但以后打算换成linux)下的C语言及C++开发,可以推荐几本书吗

UNIX是最古老的通用操作系统。 1969年,贝尔实验室的K.Thompson和DMRitchie的发展的基础上的更小,更简单的分时操作系统MULTICS UNIX,DEC PDP-7小型机,1970年正式投产。几年后,UNIX有一个有限的操作系统,在1971年,AT&T开发的PDP-11/20汇编语言写的V1版本,包括基本的文件系统和一些简单的软件后,他经历了一些改进。

1973年,DMRitchie开发了一个系统描述C语言,新的C重写了原来的汇编语言编写的,UNIX的应用程序,这是V5,这使得UNIX更容易,并与不同的CPU平台的可移植性,这已成为一大重要特征的UNIX从那时起,几乎是UNIX操作系统和应用程序使用C语言编写,并且只需要有相应的平台的C编译器(C语言翻译成机器语言的相应的平台翻译软件)移植。有一个传统的C和UNIX之间的关系非常密切。同年,K.Thompson和DMRitchie提交协会的原则,计算机械第四操作系统研讨会“的Unix分时系统”的文章中,UNIX系统正式披露文章后来发表在1974年七月Commnnication的ACM的杂志上。

1975年,V6推出之后Interactioe系统公司(SUN收购),成为第一个UNIX经销商,UNIX走出贝尔实验室的PDP-11机开始普遍,尤其是在大学校园里流行。解剖结构的UNIX,修正错误,并加以改进,开发出更好的应用程序,所有的教师和学生计算机专业的最佳分配和毕业设计的主题。威廉为首的美国加州大学伯克利分校(UCB)软件技术发展成为V6衍生BSD,BSD,伯克利的UNIX家族的一个新成员的喜悦,取得了很大的发展。直到1992年,UNIX商标持有人USL(AT&T,后来开了一间附属公司)起诉伯克利的Unix授权使用不当,虽然USL最终失去了,但大学伯克利分校同年宣布,该公司将不再开发BSD BSD最终版本4.4BSD这是未来的事情。下面的两所学校,AT&T UNIX,UNIX和BSD自己的专业发展示意图。除了UCB,卡内基 - 梅隆大学(CMU)马赫计划还对UNIX的发展产生深远的影响。许多流行的UNIX系统与马赫。

在1978年推出的AT&T V6推出V7,包括更多的命令和支持大型文件V7后来被移植到VAX机,被称为32 V,在1981年,开发了一个系统III介绍,1983年,在教育和易于维护的System V的

另外的两个主要流派,有一些软件和硬件厂商在不同的CPU平台上开发的UNIX操作系统类似。这些系统,尽管实施了是相同的,但它的功能和操作的管理工具,类似某些版本的主要流派,我们称之为“兼容UNIX,下表的列表,兼容UNIX:

公司名称的硬件平台的特点 BR / AIX IBM RS6000,POWER PC融合SVR2和BSD的特点

IRIX SGI PC /工作站管理SVR4

ULTRIX DEC PC系统的特点的基础上的最新版本V5.x中有许多功能4.2BSD和4.3BSD

SunOS中

(Solaris)的SUN 68K,SPARC,X86基于4.3BSD,许多来自System V的含量,SUN开发自己的NFS OPEN LOOK GUI标准

HP-UX的HP X86,惠普(HP)工作站4.2BSD

的的NeXTstep 68K NEXT在基于X86的Mach核心的4.3BSD,友好的用户界面,以符合OPENSTEP标准

Xenix的“上海合作组织发展/微软X86 SVR2基地

SCO UNIX SCO X86 Xenix的后续产品,影响较大的PC UNIX

UNICOS Cray公司Cray超级计算机

戴尔UNIX戴尔X86的基础上SVR4

Minix的个人作品X86,苹果,Atari和V7兼容的Linux鼻祖

有趣的是,其中大部分是被称为“UNIX”,主要的原因是AT&T的UNIX商标的(及其附属USL后)举行,由1993年的春天,NOVELL的USL收购的UNIX商标从这个马甲的NOVELL历史,“AT&T UNIX的名称。在1994年,NOVELL令人惊讶的放弃”UNIX“商标,转卖到英国的X /中打开它使得所有的X / OPEN标准的操作系统,可以被称为“UNIX”。然而,NOVELL保留原来的UNIX系统程序代码的版权。

今日稍后,书中并没有说,我在这里补充,由于BSD 4.4打版权官司的AT&T(后来的发展的基础上,在BSD中删除的工作和AT&T发达的今天FreeBSD的代码版权问题,停止发展),最后庭外和解的诉讼之后,AT&T面临反垄断投诉,只有UNIX的一部分出售给SCO,NOVELL的来源和他们的UnixWare的产品出售给SCO最近SCO的UNIX服务器Linux厂商Caldera再次出售部分。 ..

UNIX的发明者,因为他们的杰出贡献,在20世纪80年代

IT界诺贝尔奖 - 图灵奖

简单的Unix-like的操作系统,Linux是一个自由使用和自由传播它主要是基于Intel x86系列CPU的计算机上,该系统是由成千上万的世界各地的成千上万的程序员设计和实现的,其目的是要建立无任何商业软件著作权的限制,整个世界都可以自由使用的Unix兼容产品。

Linux的出现,最早开始在电脑爱好者的名为Linus Torvalds的是,芬兰赫尔辛基大学的学生时,他他的目标是设计一个地方。在Minix(一个叫安德鲁Tannebaum计算机系教授编写的一个操作系统示教程序)的操作系统,操作系统可用于386,486或奔腾处理器的个人计算机上,,并拥有了Unix的全部功能,操作系统,并由此开始了在Linux设计的样机,其效率和灵活性

Linux的Unix的全部功能,它可以在PC计算机上实现多任务,多用户能力,而Linux是在GNU通用公共许可权限下免费提供,是一个POSIX兼容的操作系统Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括一个文本编辑器,高级语言编译器的应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT,并允许我们使用窗口,图标和菜单操作该系统。

Linux的原因所爱广大电脑爱好者,主要有两个原因,一是它属于自由软件,用户不支付任何费用,你可以得到它,和它的源代码,并且可以根据自己的需要,以使该必要的,没有限制,自由地使用它继续蔓延。另一个原因是,它的所有的Unix功能,任何使用Unix操作系统的,或者你想要学习Unix操作系统,可以从Linux中获益。

想在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在线手册:

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库,你可以购买相关的书籍,这些书籍一般会详细介绍每个函数的用户和一些注意点;当然你也可以登陆 ... 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的链接地址,相信在这篇文档中有你需要的大部分问题的解决方法。

4. UNIX环境编程

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

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

《Unix环境高级编程》中对Unix环境编程有着非常详细且深入的论述,而且书中有大量实用性例子程序,不过可能得花上几个月得时间,好好啃一啃了。

在扎实掌握以上内容,不代表你得C语言学习支路已经完成,相反,才刚刚开始。以后你需要用学到得知识去解决大量不同实际问题,在不断得实践过程中,你会近一步加深对C的理解。有了以上基础之后,你会发现,在实践过程中需要的其他知识,你会非常快速的掌握。

(责任编辑:IT教学网)

更多

推荐Painter教程文章