欢迎光临
免费的PDF电子书下载网站

嗨翻C语言【Head First系列经典畅销书:创意C语言,嗨翻你的大脑!】 PDF下载

编辑推荐

想用C代码编写好玩的游戏吗?想成为C代码侦探,去破解重重谜案吗?或是让C代码变成牵线红娘,帮你找到你的梦中情人?哈哈!别着急,David Griffiths和Dawn Griffiths夫妇的这本Head First C将会带你来到这个奇妙的C语言世界:这里没有令人乏味的“学究腔”,没有冗长枯燥的老生常谈,也没有令人望而却步的大堆练习。作者用诙谐、幽默的口吻为你讲述了一个又一个关于C的故事。无论你是C语言学习航程中的新船员,还是经历过大风大浪的老水手,你都能从Head First C中体会到无限乐趣。 

内容简介

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

作者简介

David Griffiths12岁时看到一部介绍Seymour Papert工作的纪录片,从此踏上编程之路。15岁那年实现了Papert的LOGO编程语言。大学专业是理论数学,毕业后开始编程,并成为一名专栏作家。现在有三个头衔:敏捷教练、程序员和车库管理员。在《嗨翻C语言》之前,David写过两本Head First系列的书:Head First Rails和Head First Programming。你可以在Twitter上“粉”David:http://twitter.com/dogriffiths。Dawn Griffiths在英国一所*的大学开始了她的数学生涯,获得了数学系的荣誉学位,毕业以后投身软件开发行业,迄今已经有15年的IT行业从业经验。在和David一起写《嗨翻C语言》之前,Dawn写过两本Head First系列的书(《深入浅出统计学》和Head First 2D Geometry),同时还主持过该系列其他几本书。

嗨翻C语言【Head First系列经典畅销书:创意C语言,嗨翻你的大脑!】 PDF下载

目录

目 录

引子
  让大脑重视C语言。现在你正试着学习某些东西,为了不让学习卡壳,你的大脑也在帮你的忙,大脑在想:“最好把空间留给重要的事,比如什么动物是危险的?裸体滑雪是不是一个坏主意?”那么怎么才能欺骗你的大脑,让它认为学好C关系到你下半生的幸福呢?
 本书为谁而写 xxxii
 我们知道你在想什么 xxxiii
 元认知 xxxv
 驯服你的大脑 xxxvii
 用户须知 xxxviii
 技术审校团队 xl
 致谢 xli

1 进入C语言的世界
  C语言入门
  想知道计算机在想什么?
  你需要为一款新游戏编写高性能的代码吗?你需要为Arduino编程吗?你需要在iPhone应用中使用高级的第三方库吗?如果是的话,C语言就可以帮上忙了。相比其他大多数语言,C语言的工作层次更低,因此理解C语言可以让你更清楚程序在运行时到底发生了什么,C语言还可以帮助你更好地理解其他语言。来吧,拿起编译器,很快你就能入门了。
 C语言用来创建空间小、速度快的程序 2
 完整的C程序长啥样? 5
 如何运行程序? 9
 两类命令 14
 到目前为止的代码 15
 用C语言算牌? 17
 布尔运算 18
 现在的代码 25
 随时转向的命运列车 26
 有时一次还不够…… 29
 所有循环的结构都相同…… 30
 用break语句退出循环…… 31
 C语言工具箱 40

2 存储器和指针
  指向何方?
  如果真的想玩转C语言,就需要理解C语言如何操纵存储器。
  C语言在如何使用存储器方面赋予了你更多的掌控权。在本章中,你将揭开存储器神秘的面纱,看到读写变量时到底发生了什么;学习数组的工作原理,以及怎样避免烦人的存储器错误;最重要的是,你将看到掌握指针和存储器寻址对成为一名地道的C程序员来讲有多么重要。
 C代码包含指针 42
 深入挖掘存储器 43
 和指针起航 44
 试着传递指向变量的指针 47
 使用存储器指针 48
 怎么把字符串传给函数? 53
 数组变量好比指针…… 54
 运行代码时,计算机在想什么 55
 数组变量与指针又不完全相同 59
 为什么数组从0开始 61
 为什么指针有类型 62
 用指针输入数据 65
 使用scanf()时要小心 66
 除了scanf()还可以用fgets() 67
 字符串字面值不能更新 72
 如果想修改字符串,就复制它 74
 把存储器保存在大脑里 80
 C语言工具箱 81

2.5 字符串
  字符串原理
  字符串不只是用来读取的。
  在C语言中字符串其实就是char数组,这你已经知道了,问题是字符串能用来干嘛?该string.h出场了。string.h是C标准库的一员,它负责处理字符串。如果想要连接、比较或复制字符串,string.h中的函数就可以派上用场了。在本章中,你将学会如何创建字符串数组,并近距离观察如何使用strstr()函数搜索字符串。
 不顾一切找Frank 84
 创建数组的数组 85
 找到包含搜索文本的字符串 86
 使用strstr()函数 89
 该审查代码了 94
 “数组的数组”和“指针的数组” 98
 C语言工具箱 101

3 创建小工具
  做一件事并把它做好
  操作系统都有小工具。
  C语言小工具执行特定的小任务,例如读写文件、过滤数据。如果想要完成更复杂的任务,可以把多个工具链接在一起。那么如何构建小工具呢?本章
中,你会看到创建小工具的基本要素并学会控制命令行选项、操纵信息流、重定向,并很快建立自己的工具。
 小工具可以解决大问题 104
 程序如何工作 108
 但没有使用文件…… 109
 可以用重定向 110
 隆重推出标准错误 120
 默认情况下,标准错误会发送到显示器 121
 fprintf()打印到数据流 122
 用fprintf()修改代码吧 123
 灵活的小工具 128
 切莫修改geo2json工具 129
 一个任务对应一个工具 130
 用管道连接输入与输出 131
 bermuda工具 132
 输出多个文件 137
 创建自己的数据流 138
 main()可以做得更多 141
 由库代劳 149
 C语言工具箱 156

4 使用多个源文件
  分而治之
  大程序不等于大源文件。
  你能想象一个企业级的程序如果只有一个源文件,维护起来有多么困难与耗时吗?在本章中,你将学习怎样把源代码分解为易于管理的小模块,然后把它们合成一个大程序,同时还将了解数据类型的更多细节,并结识一个新朋友:make。
 简明数据类型指南 162
 勿以小杯盛大物 163
 使用类型转换把float值存进整型变量 164
 不好啦,兼职演员来了…… 168
 代码到底怎么了 169
 编译器不喜欢惊喜 171
 声明与定义分离 173
 创建第一个头文件 174
 如果有共同特性…… 182
 把代码分成多个文件 183
 编译的幕后花絮 184
 共享代码需要自己的头文件 186
 又不是造火箭……还真是! 189
 不要重新编译所有文件 190
 首先,把源代码编译为目标文件 191
 记不住修改了哪些文件 196
 用make工具自动化构建 198
 make是如何工作的 199
 用makefile向make描述代码 200
 火箭升空! 205
 C语言工具箱 206

5 结构、联合与位字段
  创建自己的结构
  生活可比数字复杂多了。
  到目前为止,你只接触过C语言的基本数据类型,但如果想表示数字、文本以外的其他东西呢,或为现实世界中的事物建立模型,怎么办?结构将帮你创建自己的结构,模拟现实世界中错综复杂的事物。在本章中,你将学习如何把基本数据类型组成结构以及用联合处理生活的不确定性。如果你想简单地模拟“是”或“非”,可以用位字段。
 有时要传很多数据 218
 窃窃私语 219
 用结构创建结构化数据类型 220
 只要把“鱼”给函数就行了 221
 使用“.”运算符读取结构字段 222
 结构中的结构 227
 如何更新结构 236
 代码克隆了乌龟 238
 你需要结构指针 239
 (*t).age和*t.age 240
 同一类事物,不同数据类型 246
 联合可以有效使用存储器空间 247
 如何使用联合 248
 枚举变量保存符号 255
 有时你想控制某一位 261
 位字段的位数可调 262
 C语言工具箱 266

6 数据结构与动态存储
  牵线搭桥
  一个结构根本不够。
  为了模拟复杂的数据需求,通常需要把结构链接在一起。在本章中,你将学习如何用结构指针把自定义数据类型连接成复杂的大型数据结构,将通过创建链表来探索其中的基本原理;同时还将通过在堆上动态地分配空间来学习如何让数据结构处理可变数量的数据,并在完成工作后释放空间;如果你嫌清理工作太麻烦,可以学习一下怎么用valgrind。
 保存可变数量的数据 268
 链表就是一连串的数据 269
 在链表中插入数据 270
 创建递归结构 271
 用C语言创建岛屿…… 272
 在链表中插入值 273
 用堆进行动态存储 278
 有用有还 279
 用malloc()申请存储器…… 280
 用strdup()修复代码 286
 用完后释放存储器 290
 SPIES系统综述 300
 软件取证:使用valgrind 302
 反复使用valgrind,收集更多证据 303
 推敲证据 304
 最终审判 307
 C语言工具箱 309

7 高级函数
  发挥函数的极限
  基本函数很好用,但有时需要更多功能。
  到目前为止,你只关注了一些基本的东西,为了达成目标,需要更多的功能与灵活性。本章你将学习如何把函数作为参数传递,从而提高代码的智商,
并学会用比较器函数排序,最后还将学会使用可变参数函数让代码伸缩自如。
 寻找真命天子…… 312
 把代码传给函数 316
 把函数名告诉find() 317
 函数名是指向函数的指针…… 318
 ……没有函数类型 319
 如何创建函数指针 320
 用C标准库排序 325
 用函数指针设置顺序 326
 分手信自动生成器 334
 创建函数指针数组 338
 让函数能伸能缩 343
 C语言工具箱 350

8 静态库与动态库
  热插拔代码
  你已经见识过标准库的威力。
  是时候在代码中发挥这种威力了。在本章中,你将学会创建自己的库,以及在多个程序中复用相同代码;还将掌握编程大师的秘诀——通过动态库在运行时共享代码;最后你将写出易于扩展并可以有效管理的代码。
 值得信赖的代码 352
 尖括号代表标准头文件 354
 如何共享代码? 355
 共享.h头文件 356
 用完整路径名共享.o目标文件 357
 存档中包含多个.o文件 358
 用ar命令创建存档 359
 最后编译其他程序 360
 Head First健身房全球化战略 365
 计算卡路里 366
 事情可没那么简单…… 369
 程序由碎片组成…… 370
 在运行时动态链接 372
 .a能在运行时链接吗? 373
 首先,创建目标文件 374
 一种平台一个叫法 375
 C语言工具箱 387

9 进程与系统调用
  打破疆界
  打破常规。
  你已经学会了通过在命令行连接小工具的方式建立复杂的程序。但如果你想在代码中使用其他程序怎么办?本章中你将学会如何用系统服务来创建和控
制进程,让程序发电子邮件、上网和使用任何已经安装过的程序。本章的最后,你将得到超越C语言的力量。
 操作系统热线电话 398
 黑客入侵了…… 402
 岂止是安全问题 403
 exec()给你更多控制权 404
 exec()函数有很多 405
 数组函数:execv()、execvp()、execve() 406
 传递环境变量 407
 大多数系统调用以相同方式出错 408
 用RSS读新闻 416
 exec()是程序中最后一行代码 420
 用fork() exec()运行子进程 421
 C语言工具箱 427

10 进程间通信
  沟通的艺术
  创建进程只是个开始。
  如果你想控制运行中的进程,向进程发送数据或读取它的输出,该怎么办?通过进程间通信,进程可以合力完成某件工作。我们将向你展示如何让程序与系统中其他程序通信,从而提升它的战斗力。
 输入输出重定向 430
 进程内部一瞥 431
 重定向即替换数据流 432
 fileno()返回描述符号 433
 有时需要等待…… 438
 家书抵万金 442
 用管道连接进程 443
 案例研究:在浏览器中打开新闻 444
 子进程 445
 父进程 445
 在浏览器中打开网页 446
 进程之死 451
 捕捉信号然后运行自己的代码 452
 用sigaction()来注册sigaction 453
 使用信号处理器 454
 用kill发送信号 457
 打电话叫程序起床 458
 C语言工具箱 466

11 网络与套接字
  金窝,银窝,不如127.0.0.1的草窝
  不同计算机上的程序需要对话。
  你已经学习了怎么用I/O与文件通信,还学习了如何让同一台计算机上的两个进程通信,现在你将走向世界舞台,让C程序通过互联网和世界各地的其他程序通信。本章的最后你将创建具有服务器和客户端功能的程序。
 互联网knock-knock服务器 468
 knock-knock服务器概述 469
 BLAB:服务器连接网络四部曲 470
 套接字不是传统意义上的数据流 472
 服务器有时不能正常启动 476
 妈妈说要检查错误 477
 从客户端读取数据 478
 一次只能服务一个人 485
 为每个客户端fork()一个子进程 486
 自己动手写网络客户端 490
 主动权在客户端手中 491
 创建IP地址套接字 492
 getaddrinfo()获取域名的地址 493
 C语言工具箱 500

12 线程
  平行世界
  程序经常需要同时做几件事。
  POSIX线程可以派生几段并行执行的代码,从而提高代码的响应速度。但是要小心!线程虽然很强大,但它们之间可能发生冲突。本章你将学习如何用红绿灯来防止代码发生车祸。最终你将学会创建POSIX线程,并使用同步机制来保护共享数据的安全。
 任务是串行的……还是…… 502
 ……进程不是唯一答案 503
 普通进程一次只做一件事 504
 多雇几名员工:使用线程 505
 如何创建线程? 506
 用pthread_create创建线程 507
 线程不安全 512
 增设红绿灯 513
 用互斥锁来管理交通 514
C 语言工具箱 521

i 饭后甜点
  十大遗漏知识点
  革命尚未成功,同志还需努力。
  我们认为你还需要知道一些事,如果不讲,总觉得哪里不对劲,但我们又不希望这本书重得只有大力士才提得动,所以我们只做简单介绍。在你放下这本书前,尽情地享用这些“美味佳肴”吧。
 #1. 运算符 540
 #2. 预处理指令 542
 #3. static关键字 543
 #4. 数据类型的大小 544
 #5. 自动化测试 545
 #6. 再谈gcc 546
 #7. 再谈make 548
 #8. 开发工具 550
 #9. 创建GUI 551
 #10. 参考资料 552

ii 话题汇总
  总复习
  将C语言的特性尽收眼底。
  我们把本书中出现过的所有关于C语言的话题和原理都汇总在了这里。把它们过一遍,看你还记得多少。每条话题都标明了来源章节号。如果你想不起来,很容易就能找到原文,甚至还可以把它们剪下来贴在墙上。

嗨翻C语言【Head First系列经典畅销书:创意C语言,嗨翻你的大脑!】 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:嗨翻C语言【Head First系列经典畅销书:创意C语言,嗨翻你的大脑!】