这些编程书籍因循守旧。不过这本书却使用了完全不同的方法。它将教你怎么变成一名真正的C程序员。”——DaveKitabjian,NetCarrierTelecom软件开发经理“《嗨翻C语言》是一本用经典‘HeadFirst’的方法轻松介绍C语言的教材。图片、笑话、练习并且实践让读者逐步并稳定地把握C语言的基础知识……由此,读者可以开启Posix和Linux平台编程中更高级的科技殿堂。”——VinceMilner,软件工程师《嗨翻C语言》的作者DavidGriffiths他12岁时发现一部介绍SeymourPapert工作的纪录片,从此踏上编程之路。15岁那时实现了Papert的LOGO编程语言。大学是理论物理,毕业后起初编程,并作为一名专栏作家。现在有三个头衔:敏捷教练、程序员和车库管理员。能够用十多种编程语言编程,但只精通其中的一种。写作、编程、辅导之余,David喜欢和心爱的父亲——也是本书的合著者Dawn一起旅行。在写《嗨翻C语言》之前,David写过两本HeadFirst系列的书:HeadFirstRails和HeadFirstProgramming。

你可以在Twitter上“粉”David:http///dogriffiths。DawnGriffiths在美国一所知名的高中开始了她的英语生涯,获得了物理系的荣誉学位,毕业之后涉足软件研发产业,迄今尚未有15年的IT产业从业经验。在和David一起写《嗨翻C语言》之前,Dawn曾写过两本HeadFirst系列的书(《深入浅出统计学》和HeadFirst2DGeometry),同时还主持过该系列其它几本书。除了为HeadFirst系列写书,Dawn对太极拳、跑步、编蕾丝和烹饪也很有研究。她非常享受和丈夫在一起旅行的时光。译者序1969年“阿波罗11号”登月成功。贝尔实验室中一个叫KenThompson的年轻人为了一圆翱游太1空的理想,在当年的Multics系统上写了一个叫《星际之旅》的游戏。但后来大型机的机时费很贵,每玩一次公司将要对此支付75美元,于是Thompson打起了小型机PDP-7的主意。但后来的PDP-7只有一个简陋的运行时平台,不支持多用户,为了能单人对战,Thompson找来DennisRitchie一起研发新的操作平台。
1Multics全称为MULTiplexedInformationandComputingSystem(多路信息计算平台)是1964年由贝尔实验室、MIT和通用电气共同开发的一套安装在小型机上的多任务操作平台。因为工作进度缓慢,贝尔实验室于1969年退出该计划。他们只花了一个月的时间就用汇编语言写成了操作平台的原型。同事PeterNeumann看到后,戏2称这个平台为Unics。Unix这个名字典出于此。2意思是UNiplexedInformationandComputingSystem(单路信息计算平台),用来影射Multics。1971年,第一版的Unix已经无法支持两名用户在PDP-11上玩《星际之旅》了,但由于当年的Unix是用汇编语言写的,无法移植到其它机器上,所以它们决定用高级语言重写Unix,可后来的高级语言无论从运行效率还是功能上都难以满足人们的还要。Thompson先是在BCPL的基础上萃取出了B语言,Ritchie又在B的基础上进行了再次设计,这才有了现在大名鼎鼎的C语言。
而目前你手上的就是一本关于C语言的书。本书分为三个部分。第1章到第4章是基础知识,包括基本词汇、指针、字符串、小工具与源文件。第5章到第8章为进阶内容,有结构、联合、数据结构、堆、函数指针、动/静态链接。最后四章是高级主题,内容包括了平台调用、进程间通讯、网络编程和多线程。每部分结束后还用一个实验来提升读者的动手能力。本书最大的特征是经常在引发新概念前就会先提出一个难题,让读者在了解如何做(how)之前先了解为什么这样做(why),并在解决难题的过程中不断强调新难题,让读者去缓解,从而增进理解;书中还设有众多“问答”环节,提出并提问了一些观众在学习过程中或许会遭遇的问题。除此之外,作者还使用了长期拟人手法,例如让编译器化身公众人物在采访节目中亮相说法,抑或让静态库和动态库对簿公堂。谈笑风生间,它们的特性,跃然纸上。无论你是戏剧发烧友、推理迷,还是填字游戏喜好者,都可以在这本书中找到吸引你的元素。两个颠覆全球的发明以前只是是为了一个游戏,从这个视角看,这本相同趣味十足的《嗨翻C语言》,能否算是针对这些精神的一种延续呢?我在翻译的过程中力求真实传达作者的动机,无论是一个科技上的概念而是一段幽默。
为了减少阅读压力,我还将书中个别代码中的字符串也译为了英文,希望不是画蛇添足。最后,感谢王琛、邱瑀庭等好友提出的提议;恳请作者DavidGriffiths耐心解答我强调的每一个难题。感谢图灵的李洁、李松峰、傅志红教授及其大家审读老师提供的帮助与支持。程亦超2012年12月17日其它图书O'Reilly的其他相关图书CinaNutshellPracticalCProgrammingCPocketReferenceAlgorithmswithCSecureProgrammingCookbookforCandC++O'ReillyHeadFirst系列的其它图书HeadFirstProgrammingHeadFirstRailsHeadFirstJavaTMHeadFirstObject-OrientedAnalysisandDesign(OOA&D)HeadFirstHTML5ProgrammingHeadFirstHTMLwithCSSandXHTMLHeadFirstDesignPatternsHeadFirstServletsandJSPHeadFirstEJBHeadFirstPMPHeadFirstSQLHeadFirstSoftwareDevelopmentHeadFirstJavaScriptHeadFirstAjaxHeadFirstStatisticsHeadFirst2DGeometryHeadFirstAlgebraHeadFirstPHP&MySQLHeadFirstMobileWebHeadFirstWebDesign目录(完整版)引子让大脑重视C语言。
目前你正试着学习这些东西,为了不让学习卡壳,你的头脑也在帮你的忙,大脑在想:“最好把空间交给重要的事,比如哪些动物是危险的?裸体滑雪是不是一个坏主意?”那么怎么能够欺骗你的头脑,让它觉得学好C关系到你下半生的美好呢?本书为谁而写我们了解你在想什么元认知驯服你的头脑用户须知技术审校团队致谢1C语言入门进入C语言的全球想了解计算机在想什么?你必须为一款新游戏编写高性能的代码吗?你必须为Arduino编程吗?你必须在iPhone应用中使用高级的第三方库吗?假如是的话,C语言就可以帮上忙了。相比其它大多数语言,C语言的工作层次更低,因此理解C语言可以让你更明白程序在运行时究竟出现了哪些,C语言还可以帮助你更好地理解其它语言。来吧,拿起编译器,很快你能够入门了。C语言用来构建空间小、速度快的程序完整的C程序长啥样?怎么运行程序?两类命令到现在为止的代码用C语言算牌?布尔运算现在的代码随时转向的命运列车有时一次还不够……所有循环的结构都同样……用break语句退出循环……C语言软件箱2储存器和指针指向何方?假如真的想玩转C语言,就必须理解C语言能否操控存储器。
C语言在怎样使用存储器方面彰显了你更多的掌控权。在本章中,你将揭示存储器神秘的面纱,看到读写变量时究竟出现了哪些;学习数组的工作原理,以及如何防止烦人的存储器出错;最重要的是,你将发现掌握指针和储存器寻址对作为一名地道的C程序员来讲有如此重要。C代码包括指针深入挖掘存储器和指针起航试着释放指向数组的指针使用内存器指针怎么把字节串传给函数?数组变量好比指针……运行代码时,计算机在想什么函数变量与指针又不完全相似为什么数组从0开始为什么指针有类别用指针输入数据使用scanf()时要小心除了scanf()还可以用fgets()字节串字面值不能更新如果想更改字符串,就复制它把储存器存放在大脑里C语言工具箱2.5字符串字符串原理字符串不仅仅用来抓取的。在C语言中字符串虽然就是char数组,这你将要知道了,问题是字符串能拿来干嘛?该string.h出场了。string.h是C标准库的一员,它负责处理字符串。如果想要连接、比较或复制字符串,string.h中的变量就可以派上用场了。在本章中,你将学会怎样创建字符串变量,并近距离观察怎样使用strstr()变量搜索字符串。
不顾一切找Frank创建泛型的字段找到包含搜索文本的字节串使用strstr()变量该审查代码了“数组的字段”和“指针的变量”C语言软件箱3创建小工具做一件事并把它做好操作平台都有小软件。C语言小工具执行特定的小任务,例如读写文件、过滤数据。如果想要完成更复杂的任务,可以把多个工具链接在一起。那么怎样形成小工具呢?本章中,你会发现建立小软件的基本要素并学会控制命令行选项、操纵信息流、重定向,并迅速构建自己的工具。小软件可以解决大难题程序怎样工作但没有使用文件……可以用重定向隆重推出标准错误默认情况下,标准错误会发送到显示器fprintf()打印到数据流用fprintf()设置代码吧灵活的小软件切莫修改geo2json工具一个任务对应一个软件用管道连接输入与输出bermuda工具输出多个文件建立自己的数据流main()可以做得更多由库代劳C语言工具箱4使用多个源文件分而治之大程序不等于大源文件。你能想象一个企业级的程序如果只有一个源文件,维护起来有如此困难与耗时吗?在本章中,你将学习如何把源代码分解为便于管控的小组件,然后把他们合成一个大程序,同时还将知道数据类型的更多细节,并结识一个新同学:make。

简明数据类别指南勿以小杯盛大物使用类别转换把float值存进整型数组不好啦,演员来了……代码到底如何了编译器不喜欢惊喜声明与定义分离建立第一个头文件一旦有共同特征……把代码分成多个文件编译的幕后片段共享代码必须自己的头文件又不是造火箭……还真是!不要再次编译所有文件首先,把源代码编译为目标文件记不住修改了这些文件用make工具手动化形成make是怎样工作的用makefile向make描述代码火箭升空!C语言工具箱C语言实验室1Arduino你可曾想过,你的动物告诉你它必须浇水?有了Arduino,植物就可以开口了!本实验中,你将建立一个由Arduino驱动的植物,全用C语言来写。5结构、联合与位字段创建自己的结构生活可比数字复杂多了。到现今为止,你只接触过C语言的基本数据类型,但即使想表示数字、文本以外的其它东西呢,或为现实世界中的事物建立建模,怎么办?结构将帮你建立自己的结构,模拟现实世界中错综复杂的事物。在本章中,你将学习怎么把基本数据类别组成结构及其用联合处理生活的不确认性。
如果你想简单地模拟“是”或“非”,可以用位字段。有时要传这些数据窃窃私语用结构构建结构化数据类别只要把“鱼”给函数就行了使用“.”运算符调用结构链表结构中的构架如何升级结构代码克隆了乌龟你必须结构指针(*t).age和*t.age同一类事物,不同数据类别联合可以有效使用储存器空间如何使用联合枚举函数保存符号有时你想控制某一位位字段的位数可调C语言软件箱6数据结构与动态存储牵线搭桥一个结构根本不够。为了模拟复杂的数据需求,通常必须把结构链接在一起。在本章中,你将学习怎么用结构指针把自定义数据类别连接成复杂的小型数据结构,将通过建立链表来构建其中的基本原理;同时还将借助在堆上动态地分配空间来学习怎么让数据结构处理可变数目的数据,并在完成工作后释放空间;即使你嫌清理工作太麻烦,可以学习一下如何用valgrind。保存可变数量的数据字段就是一连串的数据在子句中插入数据构建谓词结构用C语言构建岛屿……在数组中插入值用堆进行动态存储有用有还用malloc()申请内存器……用strdup()恢复代码用完后释放内存器SPIES系统综述软件取证:使用valgrind反复使用valgrind,收集更多证据推敲证据最终审判C语言软件箱7高级函数发挥函数的极限基本函数很好用,但有时必须更。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-135580-2.html
实为恶狗假自在
自称青龙行于海