Linux C编程一站式学习

Linux C编程一站式学习
作 者: 北京亚嵌教育研究中心组 编,宋劲彬 编著
出版社: 电子工业出版社
丛编项: 嵌入式技术丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: LINUX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  宋劲杉,亚嵌教育资深讲师,清华大学自动化系硕士,6年嵌入式系统开发经验,3年嵌入式行业教学经验,精通Linux内核、POSIX、TCP/IP,擅长ARM平台的Linux系统移植和应用开发,目前关注的方向有分布式系统、动态语言。爱好:开源软件、电子音乐、HomeParty。

内容简介

《Linux C编程一站式学习》有两条线索,一条线索是以Linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。《Linux C编程一站式学习》分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识C语言。《Linux C编程一站式学习》适合做零基础的初学者学习c语言的第一本教材,帮助读者打下牢固的基础。有一定的编程经验但知识体系不够完整的读者也可以对照《Linux C编程一站式学习》查缺补漏,从而更深入地理解程序的工作原理。《Linux C编程一站式学习》最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。《Linux C编程一站式学习》对于C语言的语法介绍得非常全面,对C99标准做了很多解读,因此也可以作为一本精简的c语言语法参考书。

图书目录

上篇 C语言入门

第1章 程序的基本概念/2

1.1 程序和编程语言/2

1.2 自然语言和形式语言/6

1.3 程序的调试/7

1.4 第一个程序/9

第2章 常量、变量和表达式/12

2.1 继续Hello World/12

2.2 常量/15

2.3 变量/16

2.4 赋值/18

2.5 表达式/19

2.6 字符类型与字符编码/23

第3章 简单函数/24

3.1 数学函数/24

3.2 自定义函数/26

3.3 形参和实参/31

3.4 全局变量、局部变量和作用域/35

第4章 分支语句/41

4.1 if语句/41

4.2 if/else语句/43

4.3 布尔代数/45

4.4 switch语句/49

第5章 深入理解函数/51

5.1 return语句/51

5.2 增量式开发/54

5.3 递归/58

第6章 循环语句/64

6.1 while语句/64

6.2 do/while语句/66

6.3 for语句/67

6.4 break和continue语句/69

6.5 嵌套循环/70

6.6 goto语句和标号/71

第7章 结构体/74

7.1 复合类型与结构体/74

7.2 数据抽象/78

7.3 数据类型标志/82

7.4 嵌套结构体/84

第8章 数组/85

8.1 数组的基本概念/85

8.2 数组应用实例:统计随机数/88

8.3 数组应用实例:直方图/91

8.4 字符串/94

8.5 多维数组/95

第9章 编码风格/100

9.1 缩进和空白/100

9.2 注释/104

9.3 标识符命名/107

9.4 函数/108

9.5 indent工具/108

第10章 gdb/110

10.1 单步执行和跟踪函数调用/110

10.2 断点/117

10.3 观察点/121

10.4 段错误/125

第11章 排序与查找/128

11.1 算法的概念/128

11.2 插入排序/129

11.3 算法的时间复杂度分析/131

11.4 归并排序/133

11.5 线性查找/138

11.6 折半查找/139

第12章 栈与队列/144

12.1 数据结构的概念/144

12.2 堆栈/144

12.3 深度优先搜索/146

12.4 队列与广度优先搜索/152

12.5 环形队列/156

本阶段总结/159

下篇 C语言本质

第13章 计算机中数的表示/162

13.1 为什么计算机用二进制计数/162

13.2 不同进制之间的换算/164

13.3 整数的加减运算/165

13.3.1 Sign and Magnitude表示法/165

13.3.2 1’s Complement表示法/166

13.3.3 2’s Complement表示法/167

13.3.4 有符号数和无符号数/168

13.4 浮点数/169

第14章 数据类型详解/172

14.1 整型/172

14.2 浮点型/176

14.3 类型转换/177

14.3.1 Integer Promotion/177

14.3.2 Usual Arithmetic Conversion/178

14.3.3 由赋值产生的类型转换/179

14.3.4 强制类型转换/179

14.3.5 编译器如何处理类型转换/179

第15章 运算符详解/182

15.1 位运算/182

15.1.1 按位与、或、异或、取反运算/182

15.1.2 移位运算/183

15.1.3 掩码/184

15.1.4 异或运算的一些特性/185

15.2 其他运算符/186

15.2.1 复合赋值运算符/186

15.2.2 条件运算符/186

15.2.3 逗号运算符/187

15.2.4 sizeof运算符与typedef类型声明/187

15.3 Side Effect与Sequence Point/189

15.4 运算符总结/191

第16章 计算机体系结构基础/193

16.1 内存与地址/193

16.2 CPU/193

16.3 设备/196

16.4 MMU/198

16.5 Memory Hierarchy/201

第17章 x86汇编程序基础/205

17.1 最简单的汇编程序/205

17.2 x86的寄存器/208

17.3 第二个汇编程序/209

17.4 寻址方式/211

17.5 ELF文件/212

17.5.1 目标文件/213

17.5.2 可执行文件/218

第18章 汇编与C之间的关系/224

18.1 函数调用/224

18.2 main函数、启动例程和退出状态/230

18.3 变量的存储布局/237

18.4 结构体和联合体/244

18.5 C内联汇编/248

18.6 volatile限定符/250

第19章 链接详解/255

19.1 多目标文件的链接/255

19.2 定义和声明/260

19.2.1 extern和static关键字/260

19.2.2 头文件/264

19.2.3 定义和声明的详细规则/268

19.3 静态库/271

19.4 共享库/274

19.4.1 编译、链接、运行/274

19.4.2 函数的动态链接过程/281

19.4.3 共享库的命名惯例/282

19.5 虚拟内存管理/284

第20章 预处理/290

20.1 预处理的步骤/290

20.2 宏定义/291

20.2.1 函数式宏定义/291

20.2.2 内联函数/294

20.2.3 #、##运算符和可变参数/296

20.2.4 #undef预处理指示/298

20.2.5 宏展开的步骤/299

20.3 条件预处理指示/300

20.4 其他预处理特性/303

第21章 Makefile基础/306

21.1 基本规则/306

21.2 隐含规则和模式规则/313

21.3 变量/317

21.4 自动处理头文件的依赖关系/321

21.5 常用的make命令行选项/324

第22章 指针/327

22.1 指针的基本概念/327

22.2 指针类型的参数和返回值/331

22.3 指针与数组/332

22.4 指针与const限定符/335

22.5 指针与结构体/337

22.6 指向指针的指针与指针数组/337

22.7 指向数组的指针与多维数组/340

22.8 函数类型和函数指针类型/341

22.9 不完全类型和复杂声明/344

第23章 函数接口/349

23.1 本章的预备知识/349

23.1.1 strcpy与strncpy/349

23.1.2 malloc与free/354

23.2 传入参数与传出参数/358

23.3 两层指针的参数/360

23.4 返回值是指针的情况/362

23.5 回调函数/365

23.6 可变参数/368

第24章 C标准库/372

24.1 字符串操作函数/373

24.1.1 给字符串赋初值/373

24.1.2 取字符串的长度/374

24.1.3 拷贝字符串/375

24.1.4 连接字符串/377

24.1.5 比较字符串/378

24.1.6 搜索字符串/379

24.1.7 分割字符串/380

24.2 标准I/O库函数/383

24.2.1 文件的基本概念/383

24.2.2 fopen/fclose/384

24.2.3 stdin/stdout/stderr/387

24.2.4 errno与perror/strerror函数/388

24.2.5 以字节为单位的I/O函数/391

24.2.6 操作读写位置的函数/393

24.2.7 以字符串为单位的I/O函数/395

24.2.8 以记录为单位的I/O函数/397

24.2.9 格式化I/O函数/399

24.2.10 C标准库的I/O缓冲区/406

24.2.11 本节综合练习/410

24.3 数值字符串转换函数/412

24.4 分配内存的函数/414

第25章 链表、二叉树和哈希表/415

25.1 链表/415

25.1.1 单链表/415

25.1.2 双向链表/421

25.1.3 静态链表/425

25.1.4 本节综合练习/426

25.2 二叉树/426

25.2.1 二叉树的基本概念/426

25.2.2 排序二叉树/432

25.3 哈希表/437

本阶段总结/439

附录A 字符编码/442

索引/449

参考书目/474