描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115432940
针对性强:面向嵌入式Linux内核源码、底层驱动软件开发等技术方向。
本书的原型思想和内容,发源于朱有鹏老师早些年的研发和学习经历,发展于后来数年的线下培训授课经历,并成熟于视频课程《C语言高级专题》(隶属于《朱有鹏老师嵌入式Linux核心课程》系列视频课程的第4部分)。本书正是基于这套视频课程的课件整理而来,参与各章节整理和编写的都是学习了视频课程的学生,由朱有鹏老师和张先凤老师检验并完善成书。这些参与编写的同学有的已经工作数年、有的则尚未走出大学校园。选择他们合作创作本书,就是为了告诉读者:做技术并不要求你天赋异禀,只需要你感兴趣、愿意去探索和练习,你也可以成功。
目录
第1 章 C 语言与内存 1
1.1 引言 1
1.2 计算机程序运行的目的 1
1.3 位、字节、半字、字的概念和内存位宽 5
1.4 内存编址和寻址、内存对齐 8
1.5 C语言如何操作内存 10
1.6 内存管理之结构体 14
1.7 内存管理之栈(stack) 15
1.8 内存管理之堆 18
课后题 19
第2 章 C 语言位操作 21
2.1 引言 21
2.2 常用位操作符 21
2.3 位操作与寄存器 26
2.4 位运算构建特定二进制数 28
2.5 位运算实战演练1 30
2.6 位运算实战演练2 32
2.7 技术升级:用宏定义来完成位运算 33
课后题 34
第3 章 指针才是C 语言的精髓 36
3.1 引言 36
3.2 指针到底是什么 37
3.3 理解指针符号 40
3.4 野指针与段错误问题 43
3.5 const关键字与指针 46
3.6 深入学习数组 49
3.7 指针与数组的天生“姻缘” 50
3.8 指针类型与强制类型转换 52
3.9 指针、数组与sizeof运算符 57
3.10 指针与函数传参 60
3.11 输入型参数与输出型参数 62
课后题 65第4 章 C 语言复杂表达式与指针高级应用 67
4.1 引言 67
4.2 指针数组与数组指针 67
4.3 函数指针与typedef 69
4.4 函数指针实战1—用函数指针调用执行函数 73
4.5 函数指针实战2—结构体内嵌函数指针实现分层 75
4.6 再论typedef 78
4.7 二维数组 83
课后题 85
第5 章 数组& 字符串& 结构体& 共用体& 枚举 88
5.1 引言 88
5.2 程序中的内存从哪里来 88
5.3 堆 90
5.4 内存中的各个段 92
5.5 C语言的字符串类型 93
5.6 字符串和字符数组的细节 95
5.7 结构体概述 96
5.8 结构体的对齐访问 98
5.9 offsetof宏与container_of宏 103
5.10 共用体(union) 105
5.11 大小端模式 107
5.12 枚举enum 110
课后题 113
第6 章 C 语言的预处理、函数和函数库 116
6.1 引言 116
6.2 C语言为什么需要编译链接 116
6.3 预处理详解 119
6.4 常见的预处理详解 120
6.5 函数的本质 129
6.6 函数的基本使用 130
6.7 递归函数 131
6.8 库函数 135
6.9 常见的库函数之字符串函数 138
6.10 常见的库函数之数学库函数 140
6.11 制作静态链接库并使用 141
6.12 制作动态链接库并使用 143
课后题 144
第7 章 存储类& 作用域& 生命周期& 链接属性 147
7.1 引言 147
7.2 概念解析 147
7.3 Linux下C程序的内存映像 149
7.4 存储类相关的关键字1 150
7.5 存储类相关的关键字2 152
7.6 作用域详解 154
7.7 变量的生命周期 155
7.8 链接属性 156
课后题 158
第8 章 C 语言关键细节讨论 159
8.1 引言 159
8.2 操作系统概述 159
8.3 main函数返回值 162
8.4 argc、argv与main函数的传参 164
8.5 void类型的本质 165
8.6 C语言中的NULL 166
8.7 运算中的临时匿名变量 168
8.8 顺序结构 169
课后题 172
第9 章 链表& 状态机& 多线程 173
9.1 引言 173
9.2 链表的引入 173
9.3 单链表的实现之构建个节点 175
9.4 单链表的实现之从尾部插入节点 177
9.5 单链表的算法之从头部插入节点 180
9.6 单链表的算法之遍历节点 181
9.7 单链表的算法之删除节点 182
9.8 单链表的算法之逆序 184
9.10 双链表的算法之插入节点 188
9.11 双链表的算法之遍历 190
9.12 双链表的算法之删除节点 191
9.13 Linux内核链表 192
9.14 内核链表的基本算法和使用简介 196
9.15 什么是状态机 198
9.16 用C语言实现简单的状态机 201
9.17 多线程简介 203
课后题 204
第10 章 程序员和编译器的暧昧 206
10.1 引言 206
10.2 编程工作的演进史 206
10.4 像编译器一样思考吧—理论篇 208
10.5 像编译器一样思考吧—实战篇 209
序言
评论
评论
还没有评论。