图书介绍
C语言程序设计进阶教程PDF|Epub|txt|kindle电子书版本网盘下载
![C语言程序设计进阶教程](https://www.shukui.net/cover/50/30410999.jpg)
- (美)陆永祥(Yung-Hsiang Lu)著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111568407
- 出版时间:2017
- 标注页数:390页
- 文件大小:48MB
- 文件页数:405页
- 主题词:C语言-程序设计-高等学校-教材
PDF下载
下载说明
C语言程序设计进阶教程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 计算机存储:内存和文件2
第1章 程序的执行2
1.1编译2
1.2重定向输出6
第2章 栈内存7
2.1值和地址7
2.2栈8
2.3调用栈9
2.3.1返回位置9
2.3.2函数实参12
2.3.3局部变量14
2.3.4值地址15
2.3.5数组16
2.3.6获取地址17
2.4可见度17
2.5习题20
2.5.1绘制调用栈Ⅰ20
2.5.2绘制调用栈Ⅱ20
2.5.3地址21
2.6习题解答21
2.6.1绘制调用栈Ⅰ21
2.6.2绘制调用栈Ⅱ22
2.6.3地址22
2.7在DDD(命令行调试程序)上检测调用栈22
第3章 预防、检测及消除bug26
3.1开发软件≠编码26
3.1.1编程前26
3.1.2编程中27
3.1.3编程后28
3.2常见错误28
3.2.1未初始化变量28
3.2.2错误数组下标28
3.2.3错误数据类型28
3.3后执行式和交互式调试28
3.4生产代码与测试代码分离29
第4章 指针30
4.1作用域30
4.2 swap函数31
4.3指针33
4.4再论swap函数37
4.5类型错误39
4.6数组和指针40
4.7类型规则43
4.8指针运算44
4.9习题47
4.9.1 swap函数147
4.9.2 swap函数248
4.9.3 swap函数348
4.9.4 swap函数448
4.9.5 swap函数549
4.9.6 15552种变化49
4.10习题解答50
4.10.1 swap函数150
4.10.2 swap函数250
4.10.3 swap函数351
4.10.4 swap函数451
4.10.5 swap函数551
第5章 编写和测试程序52
5.1不同的数组元素52
5.1.1 main函数52
5.1.2 areDistinct函数53
5.1.3编译和链接54
5.1.4 make工具55
5.2使用Makefile测试57
5.2.1生成测试用例58
5.2.2重定向输出58
5.2.3使用diff去比较输出58
5.2.4添加测试到Makefile59
5.3无效的内存访问60
5.4使用valgrind检查内存访问错误62
5.5测试覆盖64
5.6限制内核大小67
5.7带有死循环的程序67
第6章 字符串69
6.1字符数组69
6.2 C语言中的字符串函数72
6.2.1复制函数:strcpy72
6.2.2比较函数:strcmp73
6.2.3寻找子字符串函数:strstr73
6.2.4寻找字符函数:strchr74
6.3理解argv74
6.4对子字符串计数77
第7章 编程问题和调试80
7.1实现字符串函数80
7.1.1 C语言库80
7.1.2头文件80
7.1.3 mystring.h82
7.1.4创建输入和正确输出82
7.1.5 Makefile86
7.1.6 mystring.c86
7.1.7使用const88
7.2调试89
7.2.1找到死循环90
7.2.2找到无效内存访问91
7.2.3检测无效内存访问92
第8章 堆内存94
8.1用malloc函数创建数组94
8.2栈和堆96
8.3返回堆地址的函数98
8.4 C语言中的二维数组99
8.5指针和参数101
第9章 使用堆内存的编程问题104
9.1对数组排序104
9.1.1生成测试输入和期望输出104
9.1.2重定向输入105
9.1.3整数排序107
9.1.4使用valgrind检测内存泄漏110
9.2使用qsort进行排序111
9.2.1 qsort111
9.2.2比较函数112
9.2.3执行范例114
9.2.4对字符串排序115
第10章 读写文件118
10.1通过argv传递一个文件名118
10.2读取文件119
10.2.1读取字符型:fgetc119
10.2.2读取整型:fscanf(...1389896...)121
10.3写入文件123
10.4读写字符串125
第11章 编程解决使用文件的问题128
11.1对文件中的整数进行排序128
11.2计算字符出现的次数130
11.3计算单词出现的次数132
11.4如何注释程序134
第二部分 递归138
第12章 递归138
12.1在限制条件下选取小球138
12.1.1双色球问题138
12.1.2三色球问题139
12.1.3附加限制条件140
12.2单行道142
12.3汉诺塔143
12.4计算整数分拆145
12.4.1计算“1”的个数147
12.4.2仅使用奇数进行分拆148
12.4.3使用递增数进行分拆148
12.4.4交替使用奇偶数进行分拆149
12.4.5整数分拆问题的推广151
12.4.6解决分拆问题的错误方法151
第13章 递归函数152
13.1在限制条件下选取小球152
13.2单行道155
13.3汉诺塔156
13.4整数分拆158
13.5阶乘159
13.6斐波那契数列161
13.7利用gprof进行性能分析165
第14章 整数分拆167
14.1堆内存和栈内存168
14.2追踪递归函数调用176
14.3约束条件下的分拆178
14.3.1仅使用奇数进行分拆179
14.3.2使用递增数进行分拆179
14.3.3交替使用奇偶数进行分拆180
14.3.4使用gprof和gcov查找性能瓶颈180
第15章 使用递归解决问题187
15.1二分搜索187
15.2快速排序189
15.3排列组合195
15.4栈排序198
15.4.1例子1199
15.4.2例子2199
15.4.3例子3199
15.4.4例子4199
15.4.5可排序栈200
15.5追踪递归函数203
15.6一个存在错误的递归函数205
第三部分 结构208
第16章 程序员可定义数据类型208
16.1结构体和对象208
16.2作为实参传递对象212
16.3对象和指针214
16.3.1返回一个对象216
16.3.2对象和malloc216
16.4构造函数和析构函数218
16.5结构中的结构224
16.6二进制文件和对象226
第17章 使用结构的编程问题230
17.1个人信息库排序230
17.2压缩十进制数位235
17.2.1数制235
17.2.2用1字节表达2个十进制数位236
17.2.3位运算236
17.2.4压缩和恢复十进制239
17.2.5十进制压缩编程239
17.3二进制文件和指针243
第18章 链表245
18.1可扩展类型245
18.2链表246
18.3链表的插入246
18.4链表的查找248
18.5从链表中删除249
18.6打印链表252
18.7链表的销毁253
第19章 使用链表的编程问题256
19.1队列256
19.2数字排序256
19.3稀疏数组257
19.4单链表反转262
第20章 二叉搜索树264
20.1二叉搜索树265
20.2二叉搜索树的插入266
20.3二叉搜索树的搜索269
20.4二叉搜索树的遍历269
20.5二叉搜索树的删除272
20.6二叉搜索树的销毁274
20.7主函数main274
20.8链接器Makefike275
20.9不同的二叉树结构275
第21章 线程并行编程278
21.1并行编程278
21.2多任务处理278
21.3 POSIX线程279
21.4子集和280
21.4.1生成测试实例281
21.4.2字典顺序处理283
21.4.3多线程处理287
21.5多线程处理过程的交叉运行289
21.6线程同步293
21.7阿姆达尔定律295
第四部分 应用298
第22章 寻找迷宫出口298
22.1迷宫的文件格式298
22.2读取迷宫文件299
22.3迷宫结构体303
22.4逃跑策略306
22.5策略的实现308
22.5.1 canMove函数308
22.5.2 getout函数309
22.5.3打印访问过的位置313
第23章 图像处理316
23.1图像结构体316
23.2图像处理321
23.2.1图像像素和颜色321
23.2.2处理函数322
23.2.3应用一个颜色滤波器322
23.2.4图像颜色反转324
23.2.5边缘检测324
23.2.6颜色均衡326
第24章 霍夫曼压缩329
24.1例程329
24.2编码330
24.2.1计算频率330
24.2.2按频率排序332
24.2.3构建编码树334
24.2.4创建编码本342
24.2.5压缩文件346
24.2.6位压缩349
24.3解码353
附录A Linux370
附录B版本控制373
附录C集成开发环境376
索引385