内容简介
《嗨翻C语言》是一本以独特视角和生动方式讲解C语言编程的入门书籍。作者David Griffiths和Dawn Griffiths采用“脑科学”学习原理,结合大量视觉化元素、幽默比喻和实践练习,打破传统教材枯燥乏味的刻板印象,帮助读者轻松掌握C语言的核心概念。
内容涵盖C语言基础语法、指针、内存管理、字符串、结构体、文件处理、数据结构、动态内存分配、位操作以及C语言与硬件的关系等主题。每章以实际项目为驱动,穿插《绿灯侠》漫画风格的插图和故事线索,让复杂的概念变得直观易懂。书中还特别强调了常见错误和调试技巧,培养读者良好的编程习惯。
本书适合零基础或略有编程经验的读者,也适合作为高校C语言课程的补充读物。通过阅读本书,读者不仅能学会C语言的语法,更能理解计算机底层工作原理,为后续学习操作系统、嵌入式开发或编程进阶打下坚实基础。
目录
O’Reilly Media, Inc.介绍
献辞
对Head First丛书的赞誉
对本书的赞誉
《嗨翻C语言》的作者
译者序
其他图书
引子
本书为谁而写
我们知道你在想什么
元认知:思考的思考
驯服你的大脑
用户须知
技术审校团队
1 C语言入门:进入C语言的世界
C语言用来创建空间小、速度快的程序
完整的C程序长啥样?
如何运行程序?
两类命令
到目前为止的代码
用C语言算牌?
布尔运算
现在的代码
随时转向的命运列车
有时一次还不够……
所有循环的结构都相同……
用break语句退出循环……
C语言工具箱
2 存储器和指针
C代码包含指针
深入挖掘存储器
和指针起航
试着传递指向变量的指针
使用存储器指针
怎么把字符串传给函数?
数组变量好比指针……
运行代码时,计算机在想什么
数组变量与指针又不完全相同
为什么数组从0开始
为什么指针有类型
用指针输入数据
使用scanf()时要小心
除了scanf()还可以用fgets()
字符串字面值不能更新
如果想修改字符串,就复制它
把存储器保存在大脑里
C语言工具箱
2.5 字符串
不顾一切找Frank
创建数组的数组
找到包含搜索文本的字符串
使用strstr()函数
该审查代码了
“数组的数组”和“指针的数组”
C语言工具箱
3 创建小工具
小工具可以解决大问题
程序如何工作
但没有使用文件……
可以用重定向
隆重推出标准错误
默认情况下,标准错误会发送到显示器
fprintf()打印到数据流
用fprintf()修改代码吧
灵活的小工具
切莫修改geo2json工具
一个任务对应一个工具
用管道连接输入与输出
bermuda工具
输出多个文件
创建自己的数据流
main()可以做得更多
由库代劳
C语言工具箱
4 使用多个源文件
简明数据类型指南
勿以小杯盛大物
使用类型转换把float值存进整型变量
不好啦,兼职演员来了……
代码到底怎么了
编译器不喜欢惊喜
声明与定义分离
创建第一个头文件
如果有共同特性……
把代码分成多个文件
编译的幕后花絮
共享代码需要自己的头文件
又不是造火箭……还真是!
不要重新编译所有文件
首先,把源代码编译为目标文件
记不住修改了哪些文件
用make工具自动化构建
make是如何工作的
用makefile向make描述代码
火箭升空!
C语言工具箱
C语言实验室1:Arduino
5 结构、联合与位字段
有时要传很多数据
窃窃私语
用结构创建结构化数据类型
只要把“鱼”给函数就行了
使用“.”运算符读取结构字段
结构中的结构
如何更新结构
代码克隆了乌龟
你需要结构指针
(*t).age和*t.age
同一类事物,不同数据类型
联合可以有效使用存储器空间
如何使用联合
枚举变量保存符号
有时你想控制某一位
位字段的位数可调
C语言工具箱
6 数据结构与动态存储
保存可变数量的数据
链表就是一连串的数据
在链表中插入数据
创建递归结构
用C语言创建岛屿……
在链表中插入值
用堆进行动态存储
有用有还
用malloc()申请存储器……
用strdup()修复代码
用完后释放存储器
SPIES系统综述
软件取证:使用valgrind
反复使用valgrind,收集更多证据
推敲证据
最终审判
C语言工具箱
7 高级函数
寻找真命天子……
把代码传给函数
把函数名告诉find()
函数名是指向函数的指针 1……
……没有函数类型
如何创建函数指针
用C标准库排序
用函数指针设置顺序
分手信自动生成器
创建函数指针数组
让函数能伸能缩
C语言工具箱
8 静态库与动态库
值得信赖的代码
尖括号代表标准头文件
如何共享代码?
共享.h头文件
用完整路径名共享.o目标文件
存档中包含多个.o文件
用ar命令创建存档
最后编译其他程序
Head First健身房全球化战略
计算卡路里
事情可没那么简单……
程序由碎片组成……
在运行时动态链接
.a能在运行时链接吗?
首先,创建目标文件
一种平台一个叫法
C语言工具箱
C语言实验室2:OpenCV
9 进程与系统调用
操作系统热线电话
黑客入侵了……
岂止是安全问题
exec()给你更多控制权
exec()函数有很多
数组函数:execv()、execvp()、execve()
传递环境变量
大多数系统调用以相同方式出错
用RSS读新闻
exec()是程序中最后一行代码
用fork()+exec()运行子进程
C语言工具箱
10 进程间通信
输入输出重定向
进程内部一瞥
重定向即替换数据流
fileno()返回描述符号
有时需要等待……
家书抵万金
用管道连接进程
案例研究:在浏览器中打开新闻
子进程
父进程
在浏览器中打开网页
进程之死
捕捉信号然后运行自己的代码
用sigaction()来注册sigaction
使用信号处理器
用kill发送信号
打电话叫程序起床
C语言工具箱
11 网络与套接字
互联网knock-knock服务器
knock-knock服务器概述
BLAB:服务器连接网络四部曲
套接字不是传统意义上的数据流
服务器有时不能正常启动
妈妈说要检查错误
从客户端读取数据
一次只能服务一个人
为每个客户端fork()一个子进程
自己动手写网络客户端
主动权在客户端手中
创建IP地址套接字
getaddrinfo()获取域名的地址
C语言工具箱
12 线程
任务是串行的……还是……
……进程不是唯一答案
普通进程一次只做一件事
多雇几名员工:使用线程
如何创建线程?
用pthread_create创建线程
线程不安全
增设红绿灯
用互斥锁来管理交通
C语言工具箱
C语言实验室3:爆破彗星
i 饭后甜点
#1. 运算符
#2. 预处理指令
#3. static关键字
#4. 数据类型的大小
#5. 自动化测试
#6. 再谈gcc
#7. 再谈make
#8. 开发工具
#9. 创建GUI
#10. 参考资料
ii 话题汇总
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。