嗨翻C语言

嗨翻C语言

编辑推荐

《嗨翻C语言》适用于C开发人员以及对C语言感兴趣的初学者。

内容简介

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

作者简介

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

章节目录

版权信息

版权声明

O'Reilly Media, Inc.介绍

献辞

对Head First丛书的赞誉

对本书的赞誉

《嗨翻C语言》的作者

译者序

其他图书

目录(完整版)

引子

1 C语言入门

2 存储器和指针

2.5 字符串

3 创建小工具

4 使用多个源文件

C语言实验室 1

5 结构、联合与位字段

6 数据结构与动态存储

7 高级函数

8 静态库与动态库

C语言实验室 2

9 进程与系统调用

10 进程间通信

11 网络与套接字

12 线程

C 语言实验室 3

i 饭后甜点

ii话题汇总

引子

本书为谁而写

我们知道你在想什么

元认知:思考的思考

驯服你的大脑

用户须知

技术审校团队

致谢

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()

函数名是指向函数的指针……

……没有函数类型

如何创建函数指针

用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 网络与套接字:金窝,银窝,不如127.0.0.1的草窝

互联网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 话题汇总:总复习

嗨翻C语言是2013年由人民邮电出版社出版,作者[美]DavidGriffiths。

得书感谢您对《嗨翻C语言》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
C语言程序设计:现代方法(第2版·修订版) 电子书

C语言入门零基础自学教程新升级,增加C1X相关内容,讲述C的所有特性,国外诸多名校的C语言课程教材,C开发人员的参考书。
嵌入式Linux与物联网软件开发——C语言内核深度解析 电子书

  针对性强:面向嵌入式Linux内核源码、底层驱动软件开发等技术方向。  精华原创:凝结作者多年研发及教学经验,帮助读者真正深度理解难点。  求职必读:详解常见面试题,完全应...
易学C++(第2版) 电子书

适读人群:C初学者程序员形象的比喻,生动的讲解,重新诠释了学习语言的方法实用的示例,完整的代码,为学习者量身打造的案例易学、易懂、易于实践的知识结构,降低学习C的门槛一、书中的...
从零开始:C语言快速入门教程 电子书

以服务零基础读者为宗旨,图文并茂、通俗易懂,以实例引导读者学习C语言相关知识和实战技能。
C/C++函数与算法速查宝典 电子书

本书系统地讲解了C和C++中的常用函数及算法,是一本内容丰富的案头工具书。
编程竞赛宝典:C++语言和算法入门 电子书

信息学奥赛金牌教练精心之作,算法竞赛宝典。
C#从入门到精通(第2版) 电子书

本书以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了C#的相关知识和实战技能。