热门搜索: 中考 高考 考试 开卷17
服务电话 024-96192/23945006
 

说C解C

编号:
wx1202364994
销售价:
¥39.10
(市场价: ¥46.00)
赠送积分:
39
商品介绍

本书针对目前国内高校在C 语言程序设计教学中对部分重要语法细节的关注不足、对综合应用的分析不够深入、缺少工程化意识和忽略程序DEBUG 等问题,提出了程序设计“三观”的概念,即内存观、代码观和调试观,选取25 个实用性强的专题如DEBUG 的概念及使用、scanf() 函数及键盘缓冲区、数据类型的本质、浮点数及其使用、函数参数的单向值传递、泛型排序程序设计和第三方库的安装与使用等,以科技论文的撰写方式对所列专题进行了较为深入细致的讨论。本书图文并茂,实例丰富,语言活泼,以期为深入学习和掌握C 语言程序设计的读者提供指导和帮助,为承担C 语言教学的教师提供参考和启发。

第1 章 C 语言的“三观”和提问的智慧 1
1.1 C 语言的“三观” 1
1.1.1 内存观 1
1.1.2 代码观 2
1.1.3 调试观 2
1.2 提问的智慧 3
1.2.1 提问之前应该做的事情 3
1.2.2 提问模板 4
1.2.3 提问时的建议 5
1.2.4 提问者要谨记 6
1.3 小结 6
第2 章 开发环境安装与配置 7
2.1 安装MinGW 7
2.1.1 在线安装MinGW-w64 7
2.1.2 离线安装MinGW-w64 10
2.1.3 测试MinGW-w64 11
2.1.4 配置Windows 的Path 环境变量 12
2.1.5 命令行开发C 语言程序 14
2.1.6 “Makefile”编译/链接C 语言程序 18
2.2 开发IDE——Code::Blocks 21
2.2.1 下载Code::Blocks 21
2.2.2 安装Code::Blocks 22
2.2.3 配置Code::Blocks 24
2.2.4 测试Code::Blocks 26
2.3 小结 27
第3 章 Code::Blocks 的工程及其应用28
3.1 Code::Blocks 中的工程 28
3.1.1 创建工程 28
3.1.2 “cbp”工程文件 31
3.1.3 工程设置的变更 31
3.1.4 构建工程 33
3.1.5 其它相关文件 34
3.2 在工程中添加/删除文件 35
3.2.1 为工程新建文件 35
3.2.2 为工程添加文件 36
3.2.3 为工程删除文件 38
3.3 工作区39
3.4 小结40
第4 章 DEBUG 的概念及其使用 41
4.1 DEBUG 的概念 41
4.2 在Code::Blocks 中进行DEBUG 42
4.2.1 配置Debugger 42
4.2.2 DEBUG 菜单与工具栏 43
4.2.3 添加程序运行断点 44
4.2.4 DEBUG 窗口 46
4.2.5 查看程序运行状态 48
4.2.6 单步执行程序 48
4.2.7 修改并继续调试程序 49
4.2.8 结束程序调试 51
4.2.9 调试操作失效的处理 51
4.3 在命令行DEBUG 程序 52
4.3.1 在命令行编译链接程序 52
4.3.2 在命令行启动gdb 调试器调试程序 53
4.4 小结57
第5 章 scanf() 函数及键盘缓冲区 58
5.1 输入流和输入缓冲区的概念 58
5.2 数据输入实例分析 59
5.2.1 读入整型数据存入字符型变量 59
5.2.2 读入字符型数据存入整型变量 62
5.2.3 读入字符型数据存入字符型变量 63
5.2.4 格式串中的空格 64
5.2.5 scanf()与其它输入函数混合使用 67
5.3 删除scanf() 函数留下的'' 68
5.3.1 使用循环删除 68
5.3.2 使用正则表达式删除 68
5.4 小结69
第6 章 数据类型的本质 70
6.1 数据存储方式 70
6.1.1 整型数据 70
6.1.2 浮点型数据 70
6.2 基本数据类型 71
6.2.1 字符型char 71
6.2.2 整型int 73
6.2.3 浮点型float 74
6.2.4 空类型void 74
6.3 类型修饰符 75
6.3.1 修饰内存大小 75
6.3.2 修饰符号位 76
6.3.3 内存访问限制 77
6.4 sizeof() 运算符 77
6.5 衍生数据类型 78
6.6 类型转换 81
6.6.1 类型级别 82
6.6.2 隐式类型转换 82
6.6.3 强制类型转换 83
6.7 小结83
第7 章 类型错误引起的内存紊乱 84
7.1 内存非法访问 84
7.1.1 scanf() 函数格式串不匹配问题 84
7.1.2 内存状态分析 85
7.2 内存合法访问 86
7.2.1 调整变量声明顺序 87
7.2.2 合法内存的不合理使用 87
7.3 意外改写指针值 89
7.3.1 使用指针读入数据 89
7.3.2 指针值的变化 90
7.4 小结 92
第8 章 浮点数及其使用 93
8.1 浮点数 93
8.2 IEEE754 标准浮点数 93
8.2.1 规格化数 94
8.2.2 非规格化数 94
8.2.3 特殊数 94
8.3 IEEE754 标准浮点存储格式 94
8.3.1 单精度格式 95
8.3.2 双精度格式 95
8.3.3 双精度扩展格式(SPARC结构) 96
8.3.4 双精度扩展格式(x86) 96
8.4 使用浮点数时的注意事项 97
8.4.1 交换定律不适用浮点数 97
8.4.2 计算顺序影响结果 97
8.4.3 避免对两个实数做是否相等的判断 98
8.4.4 慎用浮点数作为循环变量 99
8.4.5 避免数量级相差很大的数直接加减 100
8.4.6 浮点数的乘除运算 100
8.4.7 尽量使用double 型以提高精度 100
8.4.8 浮点数的特殊数 101
8.5 小结 102
第9 章 “自顶向下,逐步求精”的程序设计方法 103
9.1 结构化程序设计 103
9.2 计数控制循环 103
9.3 哨兵控制循环 105
9.4 结构嵌套 108
9.5 算法的伪代码描述 111
9.6 小结 112
第10 章函数及其注意事项 113
10.1 函数概述 113
10.1.1 函数声明 113
10.1.2 函数定义 114
10.1.3 函数调用 117
10.1.4 函数的使用步骤和方法 117
10.2 常见问题 117
10.2.1 嵌套定义 118
10.2.2 “return”语句不完整 118
10.2.3 参数重复声明 119
10.2.4 函数头后有“;” 119
10.2.5 形参声明格式错误 119
10.2.6 返回值与返回类型不一致 120
10.2.7 期望函数返回多个值 120
10.2.8 期望函数参数双向传递 120
10.2.9 实参与形参不一致 121
10.2.10 函数定义代替函数声明 121
10.3 小结 122
第11 章 函数参数的单向值传递 123
11.1 值传递概述 123
11.2 交换两个变量的值 123
11.2.1 直接交换 123
11.2.2 使用普通形参变量通过函数实现交换 124
11.2.3 使用指针形参变量通过函数实现交换 125
11.2.4 使用指针形参变量通过交换地址实现交换 126
11.3 DEBUG 及代码剖析 127
11.3.1 普通变量作为形参 127
11.3.2 指针变量作为形参 129
11.3.3 指针变量作为形参但交换地址 132
11.4 小结 133
第12 章 递归函数 134
12.1 递归的概念 134
12.2 递归范式 134
12.3 数学函数 135
12.3.1 阶乘函数 135
12.3.2 求幂函数 136
12.3.3 求最大公约数函数 137
12.3.4 求斐波那契数列 138
12.4 递归跳跃的信任 138
12.5 其它递归示例 139
12.5.1 探测回文 139
12.5.2 折半查找 140
12.6 避免递归中常见的错误 141
12.7 小结 142
第13 章 一维数组的本质 143
13.1 一维数组的概念 143
13.2 数组的声明 143
13.3 数组名的内涵 145
13.4 “[]”运算符和数组下标引用 146
13.5 “&a”“a”和“&a[0]” 147
13.6 数组惯用法 148
13.6.1 确定数组元素的长度 148
13.6.2 直接操作数组内存 149
13.6.3 数组作为函数的形参 149
13.6.4 字符串常量——另类数组 152
13.7 小结 153
第14 章 多维数组的本质 154
14.1 多维数组的声明 154
14.2 多维数组数组名的层级关系 155
14.3 多维数组数组名的内涵 156
14.4 数组类型 157
14.5 “a”“&a”“a[0]”“&a[0]” 和“&a[0][0]” 158
14.6 指向数组的指针 159
14.7 多维数组惯用法 161
14.7.1 二维数组的一维数组操作模式 161
14.7.2 直接操作数组内存 163
14.7.3 作为函数的形参 163
14.8 小结 166
第15 章 二级指针和二维数组 167
15.1 概述 167
15.2 二级指针指向二维数组 167
15.3 通过二级指针操作二维数组 170
15.4 小A9900706E4结 172
第16 章指针 173
16.1 指针声明 173
16.2 指针的内涵 174
16.2.1 指针的类型 174
16.2.2 指针所指向的对象的类型 175
16.2.3 指针的值 176
16.2.4 指针本身所占据的内存区 176
16.3 指针的运算 176
16.3.1 指针加上或减去一个整数 176
16.3.2 两个指针相减 179
16.3.3 指针的比较 179
16.4 & 和* 运算符 180
16.5 指针和const 180
16.6 函数指针 181
16.7 小结 188
第17 章 结构体类型 189
17.1 结构体类型概述 189
17.1.1 结构体类型的定义 189
17.1.2 声明结构体类型的变量 190
17.1.3 结构体成员的基本操作 191
17.1.4 结构体类型变量的整体赋值 191
17.1.5 结构体类型的综合应用实例 194
17.1.6 结构体常量(C99) 196
17.1.7 结构体类型的其它使用方式 197
17.1.8 使用“typedef”为结构体类型定义别名 197
17.2 包含自身结构体地址类型的指针成员 198
17.3 小结 202
第18 章 结构体变量的浅拷贝和深拷贝 203
18.1 指针成员 203
18.2 动态内存分配 204
18.3 结构体变量的销毁 205
18.4 浅拷贝 205
18.4.1 直接赋值 205
18.4.2 悬空指针 207
18.5 深拷贝 208
18.5.1 重新分配内存空间 208
18.5.2 内存的独立销毁 209
18.5.3 深拷贝的调用时机 210
18.6 小结 210
第19 章 在结构体中使用函数指针 211
19.1 函数指针的概念 211
19.2 在结构体中使用函数指针 212
19.3 小结 220
第20 章动态内存分配与管理 221
20.1 野指针 221
20.2 void *——万能指针 221
20.3 数据段、代码段、栈和堆 222
20.4 内存分配与管理函数 223
20.5 动态数组 224
20.5.1 动态一维数组 224
20.5.2 动态二维数组 226
20.5.3 柔性数组(C99) 230
20.6 内存使用的常见错误及对策 231
20.6.1 结构体指针成员未初始化 231
20.6.2 未能分配足够内存 233
20.6.3 分配的内存太小 233
20.6.4 内存分配成功但未初始化 234
20.6.5 对函数的入口进行校验 234
20.7 小结 236
第21 章 用“void *”指针实现泛型和多态编程 237
21.1 多态性的概念 237
21.2 结构体和单向链表 237
21.3 函数指针 238
21.4 泛型链表 240
21.5 异质链表 242
21.6 小结 248
第22 章 泛型排序程序设计 249
22.1 泛型程序设计 249
22.1.1 泛型数据交换函数 249
22.1.2 泛型数据比较函数 250
22.2 泛型排序 251
22.2.1 qsort 函数 251
22.2.2 泛型冒泡排序 253
22.3 用指针数组实现字符串排序 254
22.3.1 基本原理 254
22.3.2 比较函数设计 254
22.3.3 实现字符串排序 255
22.4 小结 258
第23 章 变长形参列表函数的设计与使用 259
23.1 变长形参列表函数 259
23.2 头文件 259
23.2.1 va_list 变量类型 260
23.2.2 va_start() 宏 260
23.2.3 va_arg() 宏 260
23.2.4 va_end() 宏 260
23.2.5 变长形参列表函数的基本框架 261
23.3 实例分析 262
23.3.1 求平均值 262
23.3.2 按指定格式输出数据 263
23.3.3 类型格式串 264
23.4 小结 266
第24 章 PCRE2 正则表达式第三方库267
24.1 简介 267
24.2 第三方库概述 267
24.2.1 第三方库的构成 267
24.2.2 第三方库的使用配置 268
24.3 构建第三方库 268
24.3.1 下载PCRE2 第三方库 268
24.3.2 构建PCRE2 第三方库 269
24.4 在Code::Blocks 中使用静态PCRE2 第三方库 273
24.5 在Code::Blocks 中使用动态第三方库 281
24.5.1 构建动态PCRE2 第三方库282
24.5.2 使用动态PCRE2 第三方库282
24.6 通过Code::Blocks 的环境变量使用第三方库 285
24.7 通过命令行使用第三方库 286
24.8 利用“Makefile”使用第三方库288
24.9 第三方库调用方式总结 289
24.10 小结 290
第25 章CGraph2D 图形库 291
25.1 图形库概述 291
25.1.1 功能与结构 292
25.1.2 坐标系统与函数命名 292
25.2 图形库的配置与使用 293
25.2.1 配置环境变量 293
25.2.2 为Code::Blocks 配置构建参数 295
25.2.3 样例代码 298
25.2.4 运行机制 299
25.3 函数使用说明 300
25.4 小结 300
后记302

商品参数
基本信息
出版社 西安电子科技大学出版社
ISBN 9787560655789
条码 9787560655789
编者 耿楠
译者 --
出版年月 2021-04-01 00:00:00.0
开本 其他
装帧 平装
页数 316
字数 459
版次 1
印次
纸张 一般胶版纸
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]