编辑推荐
国内领先的嵌入式培训机构华清远见出品,作者具有多年从业经验,真正从企业用人需求出发,培养和提升读者能力;
历经市场考验,第三次修订改版;
书中配有大量微课,详细讲解重点难点
内容简介
本书较为全面地介绍了嵌入式开发中C语言编程的基础知识。全书共11章,内容包括嵌入式Linux C语言开发工具、数据、数据的输入输出、运算符和表达式、程序结构和控制语句、数组、指针、函数、用户自定义数据类型、嵌入式C语言的高级用法、嵌入式Linux内核常见数据结构。每章都提供详细的练习题和视频讲解,通过练习、操作实践及相关视频,帮助读者巩固所学的内容。
本书可以作为院校嵌入式相关专业和计算机相关专业的教材,也可以作为计算机软硬件培训班教材,还可供嵌入式研究方向的专业人员和广大计算机爱好者自学使用。
作者简介
刘洪涛,北京华清远见科技信息有限公司技术总监,ARM公司全球认证讲师。参与编写过几十本专业图书;国内知名物联网方向技术顾问;首批高校物联网专业建设教学指导委员会专家委员会成员;丰富的嵌入式及物联网系统软、硬件产品开发经验;主持开发过多个大型嵌入式及物联网项目,涉及工业控制、网络、通讯、消费电子等众多领域。
目录
第1章 嵌入式Linux C语言开发工具 1
1.1 嵌入式Linux下C语言概述 2
1.1.1 C语言简史 2
1.1.2 C语言特点 2
1.1.3 嵌入式Linux C语言编程环境 3
1.2 嵌入式Linux编辑器vi的使用 3
1.2.1 vi的基本模式 4
1.2.2 vi的基本操作 4
1.2.3 vi的使用实例分析 8
1.3 嵌入式Linux编译器GCC的使用 9
1.3.1 GCC概述 9
1.3.2 GCC编译流程分析 10
1.3.3 GCC警告提示 12
1.3.4 GCC使用库函数 14
1.3.5 GCC代码优化 15
1.4 嵌入式Linux调试器GDB的使用 16
1.4.1 GDB使用实例 16
1.4.2 设置/删除断点 19
1.4.3 数据相关命令 20
1.4.4 调试运行环境相关命令 20
1.4.5 堆栈相关命令 21
1.5 make工程管理器 21
1.5.1 Makefile基本结构 22
1.5.2 Makefile变量 23
1.5.3 Makefile规则 26
1.5.4 make使用 27
小结 28
思考与练习 28
第2章 数据 29
2.1 ANSI C与GNU C 30
2.1.1 ANSI C简介 30
2.1.2 GNU C简介 30
2.2 基本数据类型 31
2.2.1 整型家族 31
2.2.2 实型家族 33
2.2.3 字符型家族 35
2.2.4 枚举家族 37
2.2.5 指针家族 38
2.3 变量与常量 39
2.3.1 变量的定义 39
2.3.2 typedef 40
2.3.3 常量的定义 41
2.3.4 作用域 41
2.3.5 存储模型 44
2.4 预处理 47
2.4.1 预定义 47
2.4.2 文件包含 53
2.4.3 条件编译 53
2.5 需要注意的问题 55
2.5.1 字长和数据类型 55
2.5.2 数据对齐 56
2.5.3 字节序 56
小结 57
思考与练习 57
第3章 数据的输入输出 58
3.1 数据的输出 59
3.1.1 字符输出函数putchar 59
3.1.2 格式化输出函数printf 59
3.2 数据的输入 62
3.2.1 字符输入函数getchar 62
3.2.2 格式化输入函数scanf 63
3.3 数据输入输出综合示例 68
3.4 字符串输入输出函数 70
小结 71
思考与练习 72
第4章 运算符和表达式 73
4.1 概述 74
4.2 运算符和表达式 74
4.2.1 算术运算符和表达式 74
4.2.2 赋值运算符和表达式 77
4.2.3 逗号运算符和表达式 80
4.2.4 位运算符和表达式 81
4.2.5 关系运算符和表达式 84
4.2.6 逻辑运算符和表达式 86
4.2.7 sizeof操作符 89
4.2.8 条件运算符 90
4.2.9 运算符优先级总结 91
小结 93
思考与练习 93
第5章 程序结构和控制语句 94
5.1 C语言程序结构 95
5.2 C语言控制语句 95
5.2.1 条件判断语句 95
5.2.2 循环语句 105
5.2.3 转向语句 109
小结 112
思考与练习 112
第6章 数组 114
6.1 一维数组 115
6.1.1 数组的定义 115
6.1.2 一维数组的引用 115
6.1.3 一维数组的初始化 117
6.1.4 一维数组的内存分配 118
6.1.5 一维数组程序举例 119
6.2 多维数组 121
6.2.1 多维数组定义及初始化 121
6.2.2 二维数组的内存分配 122
6.2.3 深入理解二维数组 123
6.2.4 二维数组程序举例 124
6.3 字符数组 126
6.4 字符串 127
6.4.1 字符串的定义 127
6.4.2 字符串的输入输出 127
6.4.3 字符串处理函数 129
小结 133
思考与练习 133
第7章 指针 134
7.1 指针基础 135
7.1.1 指针变量的定义 135
7.1.2 指针变量的赋值 135
7.1.3 指针变量的引用 136
7.2 指针的运算 139
7.2.1 指针的算术运算 140
7.2.2 指针的关系运算 141
7.2.3 空指针 144
7.3 指针与数组 145
7.3.1 指针与一维数组 145
7.3.2 指针与多维数组 147
7.4 多级指针 150
7.4.1 多级指针的定义及引用 150
7.4.2 多级指针的运算 152
7.5 指针数组 152
7.5.1 指针数组的定义及初始化 152
7.5.2 理解指针数组名 153
7.6 const与指针 155
7.7 void指针 157
7.8 字符指针 158
7.8.1 字符串 158
7.8.2 字符指针数组 159
小结 160
思考与练习 161
第8章 函数 162
8.1 函数基础 163
8.1.1 函数定义和声明 163
8.1.2 函数的调用、参数传递和返回值 164
8.1.3 函数和数组 171
8.1.4 main函数的参数 173
8.2 指针函数 174
8.2.1 指针函数的定义和使用 174
8.2.2 指针函数程序举例 177
8.3 函数指针 179
8.3.1 函数指针的声明 179
8.3.2 定义函数指针类型 180
8.3.3 函数指针数组 181
8.3.4 函数指针程序举例 182
8.4 递归函数 184
8.4.1 递归函数的定义 184
8.4.2 函数调用机制说明 185
8.4.3 递归调用的形式 185
8.4.4 递归的条件 186
8.5 回调函数 187
8.5.1 回调函数的定义 187
8.5.2 回调函数实现机制 188
8.5.3 自定义回调函数 188
8.5.4 嵌入式开发中常见的回调函数 189
8.6 attribute机制介绍 189
小结 195
思考与练习 195
第9章 用户自定义数据类型 196
9.1 结构体 197
9.1.1 结构体的定义 197
9.1.2 结构体变量的声明、使用及初始化 199
9.1.3 结构体数组 206
9.1.4 结构体指针 210
9.2 位域 211
9.2.1 位域的定义 211
9.2.2 位域变量的说明 213
9.2.3 位域的使用 214
9.3 共用体 215
9.4 枚举 217
9.4.1 枚举类型的定义 218
9.4.2 枚举变量的声明和使用 219
小结 221
思考与练习 221
第10章 嵌入式C语言的
高级用法 223
10.1 内存管理 224
10.2 动态内存的申请和释放 225
10.2.1 malloc函数 225
10.2.2 free函数 226
10.2.3 关于野指针 228
10.3 堆和栈的区别 230
10.4 动态内存程序举例 231
10.5 C语言和汇编语言的接口 233
10.5.1 内联汇编的语法 233
10.5.2 编译器优化介绍 236
10.5.3 C语言关键字volatile 236
10.5.4 “memory”描述符 236
小结 236
思考与练习 236
第11章 嵌入式Linux内核常见数据结构 239
11.1 链表 240
11.1.1 单向链表 240
11.1.2 双向链表 243
11.1.3 循环链表 245
11.1.4 ARM Linux中链表使用实例 245
11.2 树、二叉树、平衡树 247
11.2.1 树的定义 247
11.2.2 二叉树 248
11.2.3 平衡树 254
11.2.4 ARM Linux中红黑树使用实例 255
11.3 哈希表 258
11.3.1 哈希表的概念及作用 258
11.3.2 哈希表的构造方法 259
11.3.3 哈希表的处理冲突方法 260
11.3.4 ARM Linux中哈希表
使用实例 262
小结 263
思考与练习 263
嵌入式Linux C语言程序设计基础教程(微课版) 下载 mobi epub pdf txt 电子书 格式