嗨翻C语言

嗨翻C语言

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
9.3135 评价豆瓣读书
免费试读

作品简介

本书向读者提供了C语言的完整学习体验。全书分为三个部分:第1章到第4章是基础知识,包括基本语法、指针、字符串、小工具与源文件;第5章到第8章为进阶内容,有结构、联合、数据结构、堆、函数指针、动/静态链接;最后四章是高级主题,内容涵盖了系统调用、进程间通信、网络编程和多线程。每部分结束后还有一个有趣的实验,可以提高读者的实际操作能力。此外,书中还包含大量的图片、示例和代码,有助于读者对于知识的理解和把握。本书适用于C开发人员以及对C语言感兴趣的初学者。

David Griffiths,12岁时看到一部介绍Seymour Papert工作的纪录片,从此踏上编程之路。15岁那年实现了Papert的LOGO编程语言。大学专业是理论数学,毕业后开始编程,并成为一名专栏作家。现在有三个头衔:敏捷教练、程序员和车库管理员。

Dawn Griffiths,在英国一所顶尖的大学开始了她的数学生涯,获得了数学系的荣誉学位,毕业以后投身软件开发行业,迄今已经有15年的IT行业从业经验。

在和David一起写《嗨翻C语言》之前,Dawn写过两本Head First系列的书(《深入浅出统计学》和Head First 2D Geometry),同时还主持过该系列其他几本书。

作品目录

  1. O'Reilly Media, Inc.介绍
  2. 业界评论
  3. 献辞
  4. 对Head First丛书的赞誉
  5. 对本书的赞誉
  6. 《嗨翻C语言》的作者
  7. 译者序
  8. 其他图书
  9. O'Reilly的其他相关图书
  10. O'Reilly Head First系列的其他图书
  11. 引子
  12. 本书为谁而写
  13. 谁与本书无缘?
  14. 我们知道你在想什么
  15. 我们也知道你的大脑在想什么
  16. 我们将Head First的读者视为学习者。
  17. 元认知:思考的思考
  18. 我们做了什么
  19. 驯服你的大脑
  20. 用户须知
  21. 技术审校团队
  22. 致谢
  23. Safari®在线图书
  24. 1 C语言入门:进入C语言的世界
  25. C语言用来创建空间小、速度快的程序
  26. C语言的工作方式
  27. 完整的C程序长啥样?
  28. 如何运行程序?
  29. 程序工作了!
  30. 别在字符串的尽头掉下去
  31. 两类命令
  32. 做事情
  33. 只有条件为真才去做事情
  34. 到目前为止的代码
  35. 用C语言算牌?
  36. 布尔运算
  37. &&检查两个条件都为真
  38. ||检查两个条件中只要有一个为真
  39. !把条件的值反过来
  40. 现在的代码
  41. 随时转向的命运列车
  42. 有时一次还不够……
  43. 在C语言中使用while循环
  44. 所有循环的结构都相同……
  45. ……for循环让事情变得更简单
  46. 用break语句退出循环……
  47. ……用 continue 继续循环
  48. C语言工具箱
  49. 2 存储器和指针
  50. C代码包含指针
  51. 深入挖掘存储器
  52. 和指针起航
  53. 船长,向东航行!
  54. C语言按值传递参数
  55. 试着传递指向变量的指针
  56. 指针让存储器易于共享
  57. 使用存储器指针
  58. 怎么把字符串传给函数?
  59. 亲爱的,谁截了我们的字符串?
  60. 数组变量好比指针……
  61. ……所以传给函数的是指针
  62. 运行代码时,计算机在想什么
  63. 数组变量与指针又不完全相同
  64. 致命处方案件
  65. 为什么数组从0开始
  66. 为什么指针有类型
  67. 致命处方案件
  68. 用指针输入数据
  69. 用scanf()输入数字
  70. 使用scanf()时要小心
  71. scanf()会导致缓冲区溢出
  72. 除了scanf()还可以用fgets()
  73. fgets()配合sizeof一起使用
  74. 三猜一
  75. 哎呀……存储器故障……
  76. 字符串字面值不能更新
  77. 如果想修改字符串,就复制它
  78. 神奇子弹案件
  79. 神奇子弹案件
  80. 把存储器保存在大脑里
  81. C语言工具箱
  82. 2.5 字符串
  83. 不顾一切找Frank
  84. 创建数组的数组
  85. 找到包含搜索文本的字符串
  86. 使用string.h
  87. 使用strstr()函数
  88. 该审查代码了
  89. “数组的数组”和“指针的数组”
  90. C语言工具箱
  91. 3 创建小工具
  92. 小工具可以解决大问题
  93. 程序如何工作
  94. 但没有使用文件……
  95. 可以用重定向
  96. 可以用 < 重定向标准输入……
  97. 用 > 重定向标准输出
  98. 一些数据出错了……
  99. 代码拆析
  100. 隆重推出标准错误
  101. 默认情况下,标准错误会发送到显示器
  102. fprintf()打印到数据流
  103. 用fprintf()修改代码吧
  104. 最高机密
  105. 最高机密解答
  106. 灵活的小工具
  107. 切莫修改geo2json工具
  108. 做一件事并把它做好
  109. 一个任务对应一个工具
  110. 用管道连接输入与输出
  111. bermuda工具
  112. 输出多个文件
  113. 创建自己的数据流
  114. 程序运行了,但是……
  115. main()可以做得更多
  116. Head First披萨屋耳闻
  117. 由库代劳
  118. C语言工具箱
  119. 4 使用多个源文件
  120. 简明数据类型指南
  121. 勿以小杯盛大物
  122. 使用类型转换把float值存进整型变量
  123. 不好啦,兼职演员来了……
  124. 代码到底怎么了
  125. 编译器不喜欢惊喜
  126. 调整函数的顺序很痛苦
  127. 在某些场景中,没有正确的顺序
  128. 声明与定义分离
  129. 创建第一个头文件
  130. 如果有共同特性……
  131. ……最好可以共享代码
  132. 把代码分成多个文件
  133. 编译的幕后花絮
  134. 共享代码需要自己的头文件
  135. 在程序中包含encrypt.h
  136. 又不是造火箭……还真是!
  137. 不要重新编译所有文件
  138. 保存目标代码的副本
  139. 首先,把源代码编译为目标文件
  140. 然后,把目标文件链接起来
  141. 记不住修改了哪些文件
  142. 用make工具自动化构建
  143. make需要知道什么?
  144. make是如何工作的
  145. 用makefile向make描述代码
  146. 火箭升空!
  147. C语言工具箱
  148. C语言实验室1:Arduino
  149. 说明书:让盆栽说话
  150. 物理设备
  151. Arduino
  152. Arduino IDE
  153. 装配物理设备
  154. 制作湿度传感器
  155. 连接LED
  156. 连接湿度传感器
  157. 代码应该做
  158. 读取湿度传感器的数据
  159. 把数据写到LED
  160. 向串口写数据
  161. C代码怎么写
  162. 几个有用的Arduino函数
  163. 植物监控仪下线
  164. 如果你有Mac,并且想让你的植物开口说话,可以到Head First实验室网站下载一个脚本,它可以识别串行数据流,并大声地朗读出来:
  165. www.headfirstlabs.com/books/hfc
  166. 5 结构、联合与位字段
  167. 有时要传很多数据
  168. 窃窃私语
  169. 用结构创建结构化数据类型
  170. 只要把“鱼”给函数就行了
  171. 使用“.”运算符读取结构字段
  172. 结构中的结构
  173. 如何更新结构
  174. 代码克隆了乌龟
  175. 你需要结构指针
  176. (*t).age和*t.age
  177. 同一类事物,不同数据类型
  178. 联合可以有效使用存储器空间
  179. 如何使用联合
  180. C89方式
  181. 指定初始化器
  182. “点”表示法
  183. 联合常和结构一起用
  184. 枚举变量保存符号
  185. 有时你想控制某一位
  186. 位字段的位数可调
  187. C语言工具箱
  188. 6 数据结构与动态存储
  189. 保存可变数量的数据
  190. 链表就是一连串的数据
  191. 在链表中插入数据
  192. 创建递归结构
  193. 用C语言创建岛屿……
  194. ……把它们链接在一起,构成飞行之旅
  195. 在链表中插入值
  196. 用堆进行动态存储
  197. 首先,用malloc()获取空间
  198. 有用有还
  199. 调用free()释放存储器
  200. 用malloc()申请存储器……
  201. ……用free()释放存储器
  202. 不好!兼职演员来了……
  203. 消失的岛屿案件
  204. 消失的岛屿案件
  205. 用strdup()修复代码
  206. 能改好吗?
  207. 用完后释放存储器
  208. 最高机密
  209. 物证一:源代码
  210. SPIES系统综述
  211. 程序建立一棵嫌疑犯树
  212. 真聪明。有问题吗?
  213. 软件取证:使用valgrind
  214. 准备好代码:添加调试信息
  215. 真相只有一个:审问代码
  216. 反复使用valgrind,收集更多证据
  217. 这次valgrind发现了存储器泄漏
  218. 推敲证据
  219. 最终审判
  220. 泄漏已修复
  221. C语言工具箱
  222. 7 高级函数
  223. 寻找真命天子……
  224. 把代码传给函数
  225. 把函数名告诉find()
  226. 函数名是指向函数的指针……
  227. ……没有函数类型
  228. 为什么C语言没有函数类型
  229. 如何创建函数指针
  230. 用C标准库排序
  231. 用函数指针设置顺序
  232. 分手信自动生成器
  233. 创建函数指针数组
  234. 如何用数组解决刚才的问题?
  235. 让函数能伸能缩
  236. 你的函数如何做到这点?
  237. C语言工具箱
  238. 8 静态库与动态库
  239. 值得信赖的代码
  240. 尖括号代表标准头文件
  241. 如何共享代码?
  242. 共享.h头文件
  243. 用完整路径名共享.o目标文件
  244. 存档中包含多个.o文件
  245. 用ar命令创建存档
  246. ……在库目录下保存.a文件
  247. 最后编译其他程序
  248. Head First健身房全球化战略
  249. 计算卡路里
  250. 事情可没那么简单……
  251. 程序由碎片组成……
  252. ……一旦链接,就不能改变。
  253. 在运行时动态链接
  254. .a能在运行时链接吗?
  255. 动态库——加强版目标文件
  256. 首先,创建目标文件
  257. 一种平台一个叫法
  258. 编译elliptical程序
  259. Mac
  260. Linux
  261. Windows
  262. Cygwin
  263. MinGW
  264. C语言工具箱
  265. C语言实验室2:OpenCV
  266. 说明书:入侵者检测器
  267. 入侵者检测器
  268. OpenCV
  269. 安装OpenCV
  270. 代码应完成
  271. 获取输入
  272. 捕获图像
  273. 检测入侵者
  274. 全身而退
  275. 可选:显示当前画面
  276. 检测器下线
  277. 勇者之路
  278. 9 进程与系统调用
  279. 操作系统热线电话
  280. 黑客入侵了……
  281. 岂止是安全问题
  282. exec()给你更多控制权
  283. exec()函数替换当前进程
  284. exec()函数有很多
  285. 列表函数:execl()、execlp()、execle()
  286. 数组函数:execv()、execvp()、execve()
  287. 传递环境变量
  288. 出错了怎么办?
  289. 大多数系统调用以相同方式出错
  290. 用RSS读新闻
  291. exec()是程序中最后一行代码
  292. 用fork()克隆进程
  293. 用fork()+exec()运行子进程
  294. C语言工具箱
  295. 10 进程间通信
  296. 输入输出重定向
  297. 进程内部一瞥
  298. 重定向即替换数据流
  299. 进程可以重定向自己
  300. fileno()返回描述符号
  301. dup2()复制数据流
  302. 还在为错误代码烦恼?
  303. 有时需要等待……
  304. waitpid()函数
  305. 家书抵万金
  306. 从rssgossip读取新闻链接
  307. 用管道连接进程
  308. 管道两侧的命令是父子关系
  309. 案例研究:在浏览器中打开新闻
  310. pipe()打开两条数据流
  311. 子进程
  312. 父进程
  313. 在浏览器中打开网页
  314. 进程之死
  315. 操作系统用信号控制程序
  316. 捕捉信号然后运行自己的代码
  317. sigaction是一个函数包装器
  318. 处理器必须接收信号参数
  319. 用sigaction()来注册sigaction
  320. 使用信号处理器
  321. 用kill发送信号
  322. 用raise()发送信号
  323. 打电话叫程序起床
  324. …定时器发出SIGALRM信号
  325. 测试一:按Ctrl-C
  326. 测试二:等5秒
  327. C语言工具箱
  328. 11 网络与套接字
  329. 互联网knock-knock服务器
  330. knock-knock服务器概述
  331. BLAB:服务器连接网络四部曲
  332. 1. 绑定端口
  333. 2. 监听
  334. 3. 接受连接
  335. 套接字不是传统意义上的数据流
  336. 服务器有时不能正常启动
  337. 妈妈说要检查错误
  338. 绑定端口有延时
  339. 从客户端读取数据
  340. 一次只能服务一个人
  341. 为每个客户端fork()一个子进程
  342. 父子进程使用不同套接字
  343. 自己动手写网络客户端
  344. 主动权在客户端手中
  345. 远程端口和IP地址
  346. 创建IP地址套接字
  347. getaddrinfo()获取域名的地址
  348. 创建域名套接字
  349. C语言工具箱
  350. 12 线程
  351. 任务是串行的……还是……
  352. ……进程不是唯一答案
  353. 普通进程一次只做一件事
  354. 多雇几名员工:使用线程
  355. 如何创建线程?
  356. 用pthread_create创建线程
  357. 线程不安全
  358. 增设红绿灯
  359. 用互斥锁来管理交通
  360. C语言工具箱
  361. C语言实验室3:爆破彗星
  362. 经典街机游戏——爆破彗星
  363. 任务:闪避彗星并向它们开炮
  364. Allegro
  365. 安装Allegro
  366. 你需要CMake
  367. Allegro能做什么?
  368. 构建游戏
  369. 宇宙飞船
  370. 飞船的外形
  371. 碰撞
  372. 飞船行为
  373. 读取按键
  374. 炮弹
  375. 弹道
  376. 炮弹行为
  377. 彗星
  378. 彗星的外形
  379. 彗星
  380. 命中彗星
  381. 游戏状态
  382. 用“变换”移动物体
  383. 《爆破彗星》下线
  384. 出山……
  385. 送君千里终须一别!
  386. i 饭后甜点
  387. #1. 运算符
  388. 递增与递减
  389. 三目运算符
  390. 位运算
  391. 用逗号分割表达式
  392. #2. 预处理指令
  393. 条件编译
  394. #3. static关键字
  395. 用static定义私有变量或函数
  396. #4. 数据类型的大小
  397. #5. 自动化测试
  398. #6. 再谈gcc
  399. 优化
  400. 警告
  401. #7. 再谈make
  402. 变量
  403. 使用%、^和 @
  404. 隐式规则
  405. #8. 开发工具
  406. gdb
  407. gprof
  408. gcov
  409. #9. 创建GUI
  410. Linux——GTK
  411. Windows
  412. Mac——Carbon
  413. #10. 参考资料
  414. 网站
  415. ii 话题汇总
  416. 入门
  417. 存储器和指针
  418. 字符串
  419. 数据流
  420. 数据类型
  421. 多个文件
  422. 结构
  423. 联合和位字段
  424. 数据结构
  425. 动态存储
  426. 高级函数
  427. 静态库与动态库
  428. 进程间通信
  429. 网络与套接字
  430. 线程
载入中

热门划线

喜欢这本书的人也喜欢