第1章 嵌入式C语言概述 1
1.1 嵌入式C语言简介 1
1.2 嵌入式C语言的发展历史 1
1.3 嵌入式C语言的主要特点 1
1.4 单片机的汇编语言与嵌入式C语言比较 2
1.5 嵌入式C语言与标准C语言的异同 3
1.6 嵌入式C语言总结 3
第2章 嵌入式C语言程序的基本结构 4
2.1 嵌入式C语言入门实例 4
2.2 程序工作原理 4
2.3 源程序 5
2.4 嵌入式C语言程序的基本结构 6
2.5 头文件 6
2.6 主函数 7
2.7 函数 7
第3章 常量与变量的类型 8
3.1 嵌入式C语言的基本数据类型 8
3.2 基本数据类型 8
3.3 常量与变量 9
3.3.1 常量 9
3.3.2 变量 10
3.4 自定义变量类型typedef 13
第4章 运算符和表达式 14
4.1 运算符与表达式 14
4.1.1 赋值运算 14
4.1.2 算术运算 14
4.1.3 关系运算 15
4.1.4 逻辑运算 16
4.1.5 位运算 17
4.1.6 自增减运算及复合运算 18
4.1.7 条件运算符 18
4.1.8 逗号运算符 19
4.2 嵌入式C语言程序的基本结构总结 19
第5章 嵌入式C语言基本结构程序设计 20
5.1 概述 20
5.2 顺序结构:0条基本语句 20
5.3 选择结构:2条基本语句(if和switch-case-break) 20
5.3.1 if语句 21
5.3.2 switch-case语句 23
5.4 break基本语句 25
5.5 循环结构:3条基本语句(while、do…while、for) 25
5.5.1 while语句 26
5.5.2 do…while语句 27
5.5.3 for语句 27
5.5.4 循环嵌套 29
5.6 其他语句(转移语句):4条基本语句(break、continue、goto、return) 29
5.6.1 循环语句中的break语句 29
5.6.2 continue语句 30
5.6.3 goto语句 30
5.6.4 return语句 31
5.7 嵌入式C语言基本结构总结 31
第6章 函数 32
6.1 函数概述 32
6.2 函数声明 32
6.3 函数定义 33
6.4 函数的调用 33
6.4.1 函数的简单调用 33
6.4.2 函数的参数传递 34
6.4.3 函数的递归调用 36
6.5 数组作为函数参数 37
6.6 函数作用范围与变量作用域 38
6.7 函数总结 39
第7章 数组 40
7.1 一维数组 40
7.1.1 一维数组的定义 40
7.1.2 一维数组元素的引用 41
7.1.3 一维数组的初始化 41
7.2 二维数组 43
7.2.1 二维数组的定义 43
7.2.2 二维数组元素的引用 43
7.2.3 二维数组的初始化 43
7.3 字符数组 45
7.4 嵌入式C语言中数组初始化规则 47
7.5 数组总结 47
第8章 指针 48
8.1 指针概述 48
8.2 指针和地址 48
8.2.1 指针变量的定义 48
8.2.2 指针变量的引用 49
8.2.3 指针和数组 51
8.2.4 字符指针 51
8.2.5 指针数组的定义格式 52
8.3 函数指针 53
8.3.1 函数指针定义 53
8.3.2 函数指针类型 54
8.3.3 函数类型 54
8.3.4 通过指针调用函数 55
8.3.5 返回指向函数的指针 56
8.4 实验范例:键盘扫描 57
8.4.1 键盘接口 57
8.4.2 按键开关的抖动问题 57
8.4.3 编程范例 58
8.5 指针总结 60
8.6 基本C语言语句使用范例 61
8.6.1 用顺序结构实现流水灯 61
8.6.2 用单种选择语句if实现流水灯 63
8.6.3 用多种选择语句if...else、if...else if...else实现流水灯 64
8.6.4 用多种选择语句switch-case-break实现流水灯 66
8.6.5 用循环语句for实现流水灯 67
8.6.6 用循环语句while实现流水灯 68
8.6.7 用循环语句do…while实现流水灯 69
8.6.8 用转移语句goto实现流水灯 71
8.6.9 用函数调用的方式实现流水灯 72
8.6.10 用数组实现流水灯 73
8.6.11 用指针实现流水灯 74
8.6.12 用指针+数组实现流水灯 76
8.6.13 用指针+数组+函数实现流水灯 77
8.6.14 用结构体实现流水灯 78
8.6.15 用结构体数组实现流水灯 80
8.6.16 用结构体数组+指针实现流水灯 81
第9章 结构体 83
9.1 结构体概述 83
9.2 结构体变量 84
9.2.1 结构体变量定义 84
9.2.2 结构变量成员的表示方法 86
9.3 结构变量的初始化和赋值 87
9.3.1 结构变量的初始化 87
9.3.2 结构变量的赋值 88
9.4 结构数组的定义 88
9.5 结构指针变量的说明和使用 90
9.5.1 指向结构变量的指针 90
9.5.2 指向结构数组的指针 92
9.5.3 结构指针变量作为函数参数 93
9.6 结构指针总结 95
第10章 共用体 96
10.1 共用体概念 96
10.2 一般定义形式 96
10.3 共用体变量的引用方式 97
10.4 共用体类型数据的特点 97
10.5 共用体总结 98
第11章 枚举型 99
11.1 枚举类型 99
11.2 枚举类型的定义和枚举变量的说明 99
11.3 枚举类型变量的赋值和使用 100
11.4 枚举类型总结 101
第12章 链表 102
12.1 动态存储分配 102
12.2 链表的概念 104
第13章 C语言文件 110
第14章 预处理命令 113
14.1 预处理命令概述 113
14.2 宏定义 113
14.2.1 无参宏定义 113
14.2.2 带参宏定义 117
14.3 文件包含 121
14.4 条件编译 122
14.5 预处理命令总结 125
第15章 算法和类型定义符 126
15.1 算法 126
15.1.1 程序的灵魂——算法 126
15.1.2 算法分类 126
15.1.3 算法的特性 126
15.1.4 算法形式 126
15.2 结构化程序设计方法 127
15.3 类型定义符typedef 127
15.4 算法和类型定义符总结 128
15.5 常用的10种算法实例 128
15.5.1 冒泡排序算法 128
15.5.2 回文算法 130
15.5.3 幂运算 131
15.5.4 加法运算 132
15.5.5 求直角三角形边长 133
15.5.6 在排序号的数组中插入元素 133
15.5.7 字符串的拼接 134
15.5.8 闰年判断 135
15.5.9 字符串查询 136
15.5.1 0输出三位水仙花数 137
15.5.1 1计算某个日期对应该年的第几天 138
15.5.1 2输出月份对应的英文名称 139
第16章 五子棋人机智能对战 140
16.1 五子棋人机智能对战界面 140
16.2 五子棋人机智能对战软件说明 141
16.3 五子棋人机智能对战程序 141
第17章 程序模块化设计 173
17.1 模块化设计的优势 173
17.2 模块化设计的步骤 173
17.2.1 建立两个文件 173
17.2.2 编写C语言文件函数实体 174
17.2.3 编写.h文件 174
17.2.4 在工程中添加C语言文件 175
17.2.5 工程文件的管理 175
17.3 模块化设计总结 177
第18章 程序编程规范及优化 178
18.1 嵌入式C语言程序编程规范 178
18.1.1 编程总原则 178
18.1.2 编程举例 180
18.1.3 注释 181
18.1.4 命名 182
18.1.5 编辑风格 182
18.2 C语言程序编程规范总结 183
18.3 程序优化 186
18.4 项目管理知识 186
18.4.1 项目定义 186
18.4.2 项目三要素 186
18.4.3 项目过程 187
18.4.4 项目评估标准 187
18.5 电子产品开发流程 187
第19章 嵌入式C语言编程常见错误和程序调试 190
19.1 嵌入式C语言编程常见错误 190
19.2 C语言程序调试常见错误及警告的解决方法 190
19.3 C语言编译器错误信息中文翻译 195
19.4 MDK C常用警告原因及处理方法 199
附录A MicrosoftVisual C++6.0软件使用介绍 202
A.1 工程(Project)及工程工作区(ProjectWorkspace) 202
A.2 启动并进入VC 6.0的集成开发环境 203
A.3 创建工程并输入源程序代码 204
A.4 不创建工程,直接输入源程序代码 207
A.5 编译、链接后运行程序 207
A.6 VC 6.0常见快捷键操作 208
附录B MDK建立工程 211
附录C Keil C51建立工程 216
附录D 嵌入式C语言关键字 222
附录E 常用字符与ASCII代码对照 225