《高级C语言编程》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:师敏华,沈玉龙,董学文编著
  • 出 版 社:北京:科学出版社
  • 出版年份:2016
  • ISBN:9787030472359
  • 页数:248 页
图书介绍:本书很大一部分章节围绕着C程序的企业级应用的要求来进行讲述,包括从编程风格、编程规范到代码检查、调测方法及代码优化等。代码检查中介绍了业界常用Pc—lint静态检查工具,代码优化中介绍了VC的profile工具以及gcc的gprof工具用法。

第1章 编程风格与编程规范 1

1.1 引言 1

1.2 编程风格 1

1.2.1 程序版式 2

1.2.2 注释 4

1.2.3 工程文件组织形式 5

1.2.4 文件命名方式 6

1.2.5 工程编译 6

1.3 编程规范 8

1.3.1 程序设计原则 8

1.3.2 命名规范 10

1.3.3 头文件规范 11

1.3.4 函数设计规范 12

1.3.5 接口规范 16

1.3.6 宏规范 17

1.3.7 变量声明定义规范 19

1.3.8 表达式规范 20

1.3.9 内存操作规范 21

第2章 数据类型与类型封装 24

2.1 计算机中数的表示方法 24

2.1.1 原码 24

2.1.2 反码 24

2.1.3 补码 25

2.1.4 -1和255的关系 25

2.2 C语言数据类型 26

2.2.1 基本类型 26

2.2.2 构造类型 26

2.2.3 指针类型 27

2.2.4 空类型 27

2.3 数据类型的封装定义 28

2.3.1 基本类型封装定义 28

2.3.2 构造类型封装定义 28

2.3.3 指针类型封装定义 30

2.4 数据类型的大小和sizeof 33

2.4.1 sizeof的用法 33

2.4.2 sizeof的几个特例 34

2.5 数据类型所表示范围 36

2.6 数据类型转换 36

2.6.1 整型类型之间的转换 37

2.6.2 指针与数字之间的转换 37

2.6.3 指针之间的转换 37

第3章 字节对齐与字节序 38

3.1 计算机总线 38

3.1.1 数据总线(DB) 38

3.1.2 地址总线(AB) 39

3.1.3 控制总线(CB) 39

3.2 字节对齐 39

3.2.1 计算机数据访问 39

3.2.2 字节对齐的原因 40

3.2.3 结构体中的字节对齐 41

3.2.4 消息缓冲区中的字节对齐 45

3.2.5 强制字节对齐的方法 45

3.2.6 结构体定义原则 47

3.2.7 结构体访问原则 47

3.3 字节序 49

3.3.1 大端序与小端序 49

3.3.2 大端序与小端序的判断方法 49

3.3.3 网络序与主机序 50

3.3.4 消息通信中字节序的编解码方式 50

3.3.5 指针类型强转和字节序的关系 54

第4章 socket编程基础 55

4.1 概述 55

4.1.1 计算机网络体系结构 55

4.1.2 IP与端口 57

4.2 I/O复用:select函数 57

4.2.1 I/O模型 58

4.2.2 select函数 58

4.3 TCP编程 61

4.3.1 TCP协议概述 61

4.3.2 TCP通用编程模型 62

4.3.3 socket系列函数 62

4.3.4 TCP编程示例 68

4.4 UDP编程 84

4.4.1 UDP协议概述 84

4.4.2 UDP通用编程模型 84

4.4.3 recvfrom和sendto函数 84

4.4.4 UDP编程示例 85

4.5 TCP/UDP综合比较 89

4.5.1 TCP协议优劣势 89

4.5.2 UDP协议优劣势 89

4.5.3 TCP/UDP应用场景确定 89

4.6 数据发送长度与MTU 90

4.6.1 MTU 90

4.6.2 IP分片 90

4.6.3 数据发送长度 91

4.7 SCTP编程 91

4.7.1 SCTP协议概述 91

4.7.2 SCTP协议高级特性 92

4.7.3 SCTP通用编程模型 95

4.7.4 SCTP系列函数 95

4.7.5 SCTP编程示例 100

4.7.6 SCTP高级特性应用 104

4.8 套接字选项 115

4.8.1 getsockopt和setsockopt函数 115

4.8.2 常用套接字选项 115

4.8.3 通用套接字选项 116

4.8.4 TCP套接字选项 118

4.8.5 SCTP套接字选项 118

4.9 Wireshark应用 121

4.9.1 Wireshark工作原理 121

4.9.2 Wireshark使用方法 121

4.9.3 Wireshark过滤器 123

第5章 多线程与多进程编程基础 127

5.1 概述 127

5.2 线程函数 128

5.2.1 线程标识 128

5.2.2 线程创建 128

5.2.3 线程退出 129

5.2.4 等待线程退出 129

5.2.5 线程退出清理 129

5.2.6 线程属性 130

5.2.7 线程安全函数(重入) 130

5.2.8 线程示例 131

5.3 线程同步 134

5.3.1 互斥锁 134

5.3.2 读写锁 135

5.3.3 死锁 135

5.3.4 条件变量 136

5.3.5 示例 137

5.4 消息队列 141

5.4.1 消息队列系列函数 142

5.4.2 消息队列的限制 145

5.4.3 消息队列的使用 146

5.4.4 小结 148

5.5 多进程编程概述 148

5.6 信号 149

5.6.1 signal函数 149

5.6.2 kill和raise函数 150

5.6.3 信号集 151

5.6.4 sigprocmask函数 151

5.6.5 sigsuspend函数 151

5.6.6 sigaction函数 153

5.7 进程间通信 153

5.7.1 概述 153

5.7.2 进程间同步 154

5.8 进程间的消息队列 157

5.9 共享内存 161

5.9.1 mmap、munmap和msync函数 161

5.9.2 mmap一般用法 163

5.9.3 POSIX共享内存区 163

第6章 代码优化 166

6.1 概述 166

6.2 程序优化技巧 166

6.2.1 内存操作及使用优化 166

6.2.2 代码结构优化 170

6.2.3 算法优化 173

6.2.4 小结 174

6.3 程序优化分析工具 174

6.3.1 概述 174

6.3.2 Profile 175

6.3.3 gprof 183

第7章 代码检查工具 184

7.1 概述 184

7.2 Pc-lint 184

7.2.1 Pc-lint概述 184

7.2.2 Pc-lint安装及配置 185

7.2.3 Pc-lint命令行应用 189

7.2.4 Pc-lint集成应用 190

7.2.5 Pc-lint检查的常见错误 194

7.2.6 Pc-lint选项 195

7.2.7 Pc-lint帮助 197

7.3 小结 197

第8章 代码调试应用与技巧 198

8.1 概述 198

8.2 VC6调试技巧 198

8.2.1 条件断点 198

8.2.2 数据断点 200

8.2.3 其他调试技巧 201

8.3 gdb使用方法 203

8.3.1 gdb启动 204

8.3.2 断点设置与维护 205

8.3.3 流程追踪执行 206

8.3.4 信息显示 207

8.3.5 改变程序执行 209

8.3.6 gdb小结 211

8.4 dbx使用方法 211

8.4.1 dbx启动 211

8.4.2 断点设置与维护 211

8.4.3 流程追踪执行 212

8.4.4 查看信息及修改变量 212

8.4.5 其他常用命令 212

8.4.6 调试不匹配的core文件 213

8.4.7 dbx中使用gdb 213

第9章 板载程序故障分析手段 214

9.1 概述 214

9.2 打印跟踪及日志记录 214

9.2.1 输出信息级别划分 215

9.2.2 printf函数封装 215

9.3 消息跟踪 216

9.4 Shell命令 217

第10章 VMware虚拟机 219

10.1 概述 219

10.2 VMware服务器 219

10.2.1 ESXi安装 220

10.2.2 VMware vSphere Client安装使用及虚拟操作系统 224

10.3 VMware Workstation 241

附录 245

参考文献 248