本文由 伯乐在线 - programmer_lin 翻译自 fromdev。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。

你正计划着通过看书来学习C语言吗?“书籍是人类最忠诚的朋友“。海明威一定知道书籍对一个人一生的重要性。书籍是知识的丰富来源。你可以从书中学到各种知识。书籍可以毫无歧视地向读者传达作者的本意。C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的。C语言可以把程序简单地编译为机器指令,使得它成为了最高效的语言。

为什么在程序员中,C语言如此流行呢?这背后有很多原因。首先,它独立于平台,可以运行在MAC、Linux、UNIX和PC各种环境中。它是UNIX系统以及其他同样结构的系统的默认语言。同时,它是一种多用途的语言,它可以用于编写设备的驱动程序、桌面应用、嵌入式系统和DBMS(数据库管理系统)。这也就是说,你可以使用C语言写几乎所有需要的程序。


1.《C程序设计语言

这本书由C语言之父合著编写。它提供了对C语言的更好见解。比如在C语言中的控制流、运算符、数据结构和函数构造等方面,这本书都有自己的解释。书中所有概念都有合适的例子,以助读者理解。如果你想要学习一种更好的编程范式,代码重用或是注释的重要性。那么,这本书最适合你。书后的系列练习很有挑战性,可以让你通过每一个练习有所提高。

这本书并不好读。但是,这是必读的一本书。我建议,你在读完一本简单的教程之后,再阅读这本书。书中有很多章节需要很长的时间,才能深入理解和掌握。

2、C语言程序设计:现代方法

这本书以一种独特的方法解读了C语言。C语言已经经历了一些变化,这本书高效介绍了这些变化。书中的程序都是用纯C代码编写,使得程序有很好的可移植性。这本书鼓励读者独立思考,并且鼓励你找到更有效的解决问题的方法。对C语言感兴趣的学生,这是一本很好的课堂教材。

 3.《Absolute Beginner’s Guide To C》第二版,作者 Greg Perry

【更新】:这本书也有中文版《写给大家看的C语言书》,感谢刘江在评论中补充。PS:亚马逊等几大电商网站都无货中。

书如其名,这本书是特别为没有编程经验的程序员编写的。这本书从基本的I/O命令,比如printf()、scanf()讲起。在此基础上,也进一步讲解了数据结构、内存中的堆结构、循环和自定义函数。这本书以清晰的讲解模式,帮助读者更简单地理解C语言。同时,书中也简单介绍了C语言中用到的基本语法和标识符。

 4.《C Primer plus》第5版

这是目前市场上,最适合自学的C语言书籍。你可以在书中找到所有C语言编程概念的详细解释。这本书为每一个单独的概念提供了简短的例子,帮助读者更好理解。比如,指针这一章节就体现了这个特点。指针章节是本书编写最出色的章节之一。指针用来标识内存中的具体位置并且存放相应内存地址。书中参照了最新的ANSI标准C99。对于初级程序员来说,本书对学习基本概念大有帮助。这些概念在其他语言(比如:PHP和JAVA中)也有所应用。

5.《C专家编程

你是准备进一步提高编程技巧的C语言专家吗?《C专家编程》就是为你准备的,它可以帮助程序员理解高级的C语言概念。它强调程序员常用的一些最佳C语言技巧。这本书写得十分有趣,展现了作者在SUN系统(SUN SYSTEM)中的丰富经验。这本书还定义了一些传统的编程方式,比如使用不同的声明方式。同时,本书还提供了很多实用的编程实践提示,比如,指针和数组之间的差别。

一开始,借助书本学习C语言可能有些困难。但是,这些书用最好的方式介绍了C语言中的基本概念。借助这些书,你可以从学习基本的C语言开始,一直深入到学习C语言编程中的高级技巧。完成书中的练习很重要。在实现这些习题的过程中,你可以高效理解和学习有关概念。这些书,也为你继续学习其他高级语言,比如C++、JAVA,提供了基础。

C语言程序员必读的5本书的更多相关文章

  1. C 语言程序员必读的 5 本书

    你正通过看书来学习C语言吗?书籍是知识的丰富来源.你可以从书中学到各种知识.书籍可以毫无歧视地向读者传达作者的本意.C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的. ...

  2. C 语言程序员必读的 5 本书,你读过几本?

    你正通过看书来学习C语言吗?书籍是知识的丰富来源.你可以从书中学到各种知识.书籍可以毫无歧视地向读者传达作者的本意.C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的. ...

  3. C程序员必读的 3 本书

    C程序员必读的 3 本书 原创: Martin 老师  公众号:零基础零障碍学习C语言 勿用质疑,今天来看这篇文章的朋友都是准备学好C语言的朋友,大家想学好C语言的迫切性,就好比Martin老师等着元 ...

  4. Java程序员必读的9本书

    本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...

  5. java 书籍推荐 JavaEE程序员必读图书大推荐

    java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给 ...

  6. (C#)程序员必读的一些书籍

    前言 ·貌似公司里很著名的一句话,在这里套用过来了,WP研发工程师,首先是WPF/SL研发工程师,WPF/SL研发工程师首先是是个C#研发工程师,C#研发工程师首先Windows研发工程师.Windo ...

  7. 转:Jeff Atwood倾情推荐——程序员必读之书

    Jeff Atwood倾情推荐——程序员必读之书 英文版:<Code Complete 2>中文版:<代码大全(第二版)>作者:Steve McConnell译者:金戈  汤凌 ...

  8. JobDeer 的《程序员必读的职业规划书》

    JobDeer 的<程序员必读的职业规划书> 关键字 持续性,人生规划,职业规划 概念 职业规划三部分: 职业定位 目标设定 通道设计 职业价值论: 能为公司做什么 同样的能力再不同公司价 ...

  9. 9本java程序员必读的书(附下载地址)

    本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...

随机推荐

  1. ASP.ENT前台更改绑定数据的日期格式

    1.Eval和Bind的区别 绑定表达式 < %# Eval("字段名") %> < %# Bind("字段名") %> 区别 1.ev ...

  2. 使用FileSystemWatcher监视指定目录

    使用 FileSystemWatcher 监视指定目录中的更改.可监视指定目录中的文件或子目录的更改. 以下是一个简单的实例,用来监控指定目录下文件的新增.删除.重命名等情况(文件内容更改会触发多次, ...

  3. Fork开源项目之通讯框架

    项目发布于:https://github.com/HouZhiHouJue/IOCPMSG.看代码前请先看简介.

  4. jquery datatables 学习笔记

    最近项目中用到了BootStrap做后台,在选择表格插件的时候发现了jquery datatables. 功能是很强大,但是网上的例子比较少.在经过一段时间的努力可算是搞出来了. 官网地址:http: ...

  5. MySQL三层逻辑架构

    MySQL的存储引擎架构将查询处理与数据的存储/提取相分离.下面是MySQL的逻辑架构图: 第一层负责连接管理.授权认证.安全等等. 每个客户端的连接都对应着服务器上的一个线程.服务器上维护了一个线程 ...

  6. Oracle数据库基本操作(二) —— 视图、序列、索引、同义词

    一.视图(Views)与 同义词 1.视图:实际上是对查询结果集的封装,视图本身不存储任何数据,所有的数据都存放在原来的表中; 在逻辑上可以把视图看作是一张表 2.作用: 封装查询语句,简化复杂的查询 ...

  7. Freebsd10.3 Nginx多版本PHP

    服务器上需要使用多个php版本,费了好几天劲,终于有所收获.记录如下: 1.下载php-5.5.37.tar.bz2. 2.tar zvxf  php-5.5.37.tar.bz2 -C /usr/l ...

  8. JavaScript周报#184

    This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 184Ju ...

  9. div实现水平和垂直都居中的三个超实用的方法

    本文仅仅介绍作者认为的三种不错的方式, 方式一:transform: translate(-50%,-50%)  示例代码如下: .div{ position: absolute; top: 50%; ...

  10. SignalR实时通信

    /// <summary> /// Message集线器类 /// </summary> [HubName("chathub")] public class ...