C和指针(英文版)

978-7-115-30849-8
作者: 【美】Kenneth Reek
译者:
编辑: 汪振
分类: C语言

图书目录:

目 录

第 1章 快速上手 1

1.1 简介 1

1.1.1 空白和注释 5

1.1.2 预处理指令 6

1.1.3 main函数 8

1.1.4 read_column_numbers函数 11

1.1.5 rearrange函数 17

1.2 补充说明 20

1.3 编译 21

1.4 总结 21

1.5 警告的总结 22

1.6 编程提示的总结 22

1.7 问题 23

1.8 编程练习 23

第 2章 基本概念 25

2.1 环境 25

2.1.1 翻译 25

2.1.2 执行 28

2.2 词法规则 29

2.2.1 字符 29

2.2.2 注释 31

2.2.3 自由形式的源代码 32

2.2.4 标识符 32

2.2.5 程序的形式 33

2.3 程序风格 33

2.4 总结 35

2.5 警告的总结 36

2.6 编程提示的总结 36

2.7 问题 36

2.8 编程练习 38

第3章 数据 39

3.1 基本数据类型 39

3.1.1 整型家族 39

3.1.2 浮点类型 44

3.1.3 指针 45

3.2 基本声明 47

3.2.1 初始化 48

3.2.2 声明简单数组 49

3.2.3 声明指针 49

3.2.4 隐式声明 51

3.3 typedef 51

3.4 常量 52

3.5 作用域 54

3.5.1 代码块作用域 54

3.5.2 文件作用域 56

3.5.3 原型作用域 56

3.5.4 函数作用域 56

3.6 链接属性 57

3.7 存储类型 59

3.8 static关键字 61

3.9 作用域、存储类型示例 62

3.10 总结 64

3.11 警告的总结 65

3.12 编程提示的总结 65

3.13 问题 66

第4章 语句 71

4.1 空语句 71

4.2 表达式语句 72

4.3 代码块 73

4.4 if语句 73

4.5 while语句 75

4.5.1 break和continue语句 75

4.5.2 while语句的执行过程 75

4.6 for语句 77

4.7 do语句 79

4.8 switch语句 80

4.8.1 switch中的break语句 81

4.8.2 default子句 82

4.8.3 switch语句的执行过程 83

4.9 goto语句 84

4.10 总结 86

4.11 警告的总结 87

4.12 编程提示的总结 87

4.13 问题 87

4.14 编程练习 89

第5章 操作符和表达式 93

5.1 操作符 93

5.1.1 算术操作符 93

5.1.2 移位操作符 94

5.1.3 位操作符 95

5.1.4 赋值 97

5.1.5 单目操作符 100

5.1.6 关系操作符 103

5.1.7 逻辑操作符 104

5.1.8 条件操作符 106

5.1.9 逗号操作符 107

5.1.10 下标引用、函数调用和结构成员 108

5.2 布尔值 109

5.3 左值和右值 111

5.4 表达式求值 112

5.4.1 隐式类型转换 112

5.4.2 算术转换 113

5.4.3 操作符的属性 113

5.4.4 优先级和求值的顺序 115

5.5 总结 119

5.6 警告的总结 120

5.7 编程提示的总结 121

5.8 问题 121

5.9 编程练习 125

第6章 指针 129

6.1 内存和地址 129

6.2 值和类型 131

6.3 指针变量的内容 132

6.4 间接访问操作符 133

6.5 未初始化和非法的指针 135

6.6 NULL指针 136

6.7 指针、间接访问和左值 137

6.8 指针、间接访问和变量 138

6.9 指针常量 138

6.10 指针的指针 139

6.11 指针表达式 141

6.12 实例 148

6.13 指针运算 152

6.13.1 算术运算 153

6.13.2 关系运算 156

6.14 总结 157

6.15 警告的总结 159

6.16 编程提示的总结 159

6.17 问题 159

6.18 编程练习 162

第7章 函数 165

7.1 函数定义 165

7.2 函数声明 168

7.2.1 原型 168

7.2.2 函数的缺省认定 171

7.3 函数的参数 172

7.4 ADT和黑盒 176

7.5 递归 179

7.5.1 追踪递归函数 181

7.5.2 递归与迭代 185

7.6 可变参数列表 189

7.6.1 stdarg宏 190

7.6.2 可变参数的限制 190

7.7 总结 192

7.8 警告的总结 194

7.9 编程提示的总结 194

7.10 问题 194

7.11 编程练习 195

第8章 数组 197

8.1 一维数组 197

8.1.1 数组名 197

8.1.2 下标引用 199

8.1.3 指针与下标 202

8.1.4 指针的效率 203

8.1.5 数组和指针 210

8.1.6 作为函数参数的数组名 210

8.1.7 声明数组参数 212

8.1.8 初始化 213

8.1.9 不完整的初始化 214

8.1.10 自动计算数组长度 214

8.1.11 字符数组的初始化 215

8.2 多维数组 215

8.2.1 存储顺序 216

8.2.2 数组名 218

8.2.3 下标 218

8.2.4 指向数组的指针 221

8.2.5 作为函数参数的多维数组 223

8.2.6 初始化 224

8.2.7 数组长度自动计算 227

8.3 指针数组 227

8.4 总结 231

8.5 警告的总结 232

8.6 编程提示的总结 232

8.7 问题 233

8.8 编程练习 237

第9章 字符串、字符和字节 243

9.1 字符串基础 234

9.2 字符串长度 244

9.3 不受限制的字符串函数 245

9.3.1 复制字符串 245

9.3.2 连接字符串 246

9.3.3 函数的返回值 247

9.3.4 字符串比较 247

9.4 长度受限的字符串函数 248

9.5 字符串查找基础 250

9.5.1 查找一个字符 250

9.5.2 查找任何几个字符 250

9.5.3 查找一个子串 251

9.6 高级字符串查找 251

9.6.1 查找一个字符串前缀 251

9.6.2 查找标记 253

9.7 错误信息 255

9.8 字符操作 255

9.8.1 字符分类 255

9.8.2 字符转换 256

9.9 内存操作 257

9.10 总结 258

9.11 警告的总结 260

9.12 编程提示的总结 260

9.13 问题 261

9.14 编程练习 262

第 10章 结构和联合 269

10.1 结构基础知识 269

10.1.1 结构声明 270

10.1.2 结构成员 272

10.1.3 结构成员的直接访问 272

10.1.4 结构成员的间接访问 273

10.1.5 结构的自引用 274

10.1.6 不完整的声明 275

10.1.7 结构的初始化 276

10.2 结构、指针和成员 276

10.2.1 访问指针 277

10.2.2 访问结构 278

10.2.3 访问结构成员 279

10.2.4 访问嵌套的结构 281

10.2.5 访问指针成员 282

10.3 结构的存储分配 283

10.4 作为函数参数的结构 285

10.5 位段 288

10.6 联合 291

10.6.1 变体记录 293

10.6.2 联合的初始化 294

10.7 总结 295

10.8 警告的总结 296

10.9 编程提示的总结 296

10.10 问题 296

10.11 编程练习 300

第 11章 动态内存分配 303

11.1 为什么使用动态内存分配 303

11.2 malloc和free 304

11.3 calloc和realloc 305

11.4 使用动态分配的内存 306

11.5 常见的动态内存错误 307

11.6 内存分配实例 310

11.7 总结 317

11.8 警告的总结 318

11.9 编程提示的总结 318

11.10 问题 318

11.11 编程练习 319

第 12章 使用结构和指针 321

12.1 链表 321

12.2 单链表 321

12.2.1 在单链表中插入 322

12.2.2 其他链表操作 334

12.3 双链表 334

12.3.1 在双链表中插入 335

12.3.2 其他链表操作 345

12.4 总结 345

12.5 警告的总结 346

12.6 编程提示的总结 346

12.7 问题 346

12.8 编程练习 347

第 13章 高级指针话题 351

13.1 进一步探讨指向指针的指针 351

13.2 高级声明 353

13.3 函数指针 356

13.3.1 回调函数 357

13.3.2 转移表 360

13.4 命令行参数 362

13.4.1 传递命令行参数 363

13.4.2 处理命令行参数 365

13.5 字符串常量 369

13.6 总结 372

13.7 警告的总结 373

13.8 编程提示的总结 373

13.9 问题 373

13.10 编程练习 377

第 14章 预处理器 383

14.1 预定义符号 383

14.2 #define 384

14.2.1 宏 385

14.2.2 #define替换 388

14.2.3 宏与函数 389

14.2.4 带副作用的宏参数 390

14.2.5 命名约定 391

14.2.6 #undef 392

14.2.7 命令行定义 393

14.3 条件编译 394

14.3.1 是否被定义 395

14.3.2 嵌套指令 396

14.4 文件包含 397

14.4.1 函数库文件包含 398

14.4.2 本地文件包含 398

14.4.3 嵌套文件包含 399

14.5 其他指令 401

14.6 总结 402

14.7 警告的总结 403

14.8 编程提示的总结 403

14.9 问题 404

14.10 编程练习 406

第 15章 输入/输出函数 409

15.1 错误报告 409

15.2 终止执行 410

15.3 标准I/O函数库 411

15.4 ANSI I/O概念 411

15.4.1 流 412

15.4.2 文件 413

15.4.3 标准I/O常量 414

15.5 流I/O总览 415

15.6 打开流 416

15.7 关闭流 418

15.8 字符I/O 420

15.8.1 字符I/O宏 421

15.8.2 撤销字符I/O 421

15.9 未格式化的行I/O 423

15.10 格式化的行I/O 425

15.10.1 scanf家族 425

15.10.2 scanf格式代码 426

15.10.3 printf家族 430

15.10.4 printf格式代码 433

15.11 二进制I/O 436

15.12 刷新和定位函数 438

15.13 改变缓冲方式 440

15.14 流错误函数 441

15.15 临时文件 442

15.16 文件操纵函数 442

15.17 总结 443

15.18 警告的总结 446

15.19 编程提示的总结 446

15.20 问题 446

15.21 编程练习 448

第 16章 标准函数库 453

16.1 整型函数 453

16.1.1 算术  453

16.1.2 随机数 454

16.1.3 字符串转换  455

16.2 浮点型函数 457

16.2.1 三角函数  458

16.2.2 双曲函数  458

16.2.3 对数和指数函数  458

16.2.4 浮点表示形式  459

16.2.5 幂  459

16.2.6 底数、顶数、绝对值和余数  460

16.2.7 字符串转换  460

16.3 日期和时间函数 461

16.3.1 处理器时间  461

16.3.2 当天时间  462

16.4 非本地跳转  465

16.4.1 实例 466

16.4.2 何时使用非本地跳转 468

16.5 信号 469

16.5.1 信号名  469

16.5.2 处理信号  470

16.5.3 信号处理函数 472

16.6 打印可变参数列表  474

16.7 执行环境 474

16.7.1 终止执行  475

16.7.2 断言 475

16.7.3 环境  477

16.7.4 执行系统命令  477

16.7.5 排序和查找 477

16.8 locale 480

16.8.1 数值和货币格式  481

16.8.2 字符串和locale  484

16.8.3 改变locale的效果 485

16.9 总结 485

16.10 警告的总结 487

16.11 编程提示的总结 488

16.12 问题 488

16.13 编程练习 490

第 17章 经典抽象数据类型 493

17.1 内存分配 493

17.2 堆栈 494

17.2.1 堆栈接口 494

17.2.2 实现堆栈 494

17.3 队列 505

17.3.1 队列接口 505

17.3.2 实现队列 507

17.4 树 512

17.4.1 在二叉搜索树中插入 513

17.4.2 从二叉搜索树删除节点 514

17.4.3 在二叉搜索树中查找 514

17.4.4 树的遍历 515

17.4.5 二叉搜索树接口 516

17.4.6 实现二叉搜索树 516

17.5 实现的改进 526

17.5.1 拥有超过一个的堆栈 526

17.5.2 拥有超过一种的类型 526

17.5.3 名字冲突 527

17.5.4 标准函数库的ADT 528

17.6 总结 531

17.7 警告的总结 532

17.8 编程提示的总结 533

17.9 问题 533

17.10 编程练习 535

第 18章 运行时环境 537

18.1 判断运行时环境 537

18.1.1 测试程序 539

18.1.2 静态变量和初始化 541

18.1.3 堆栈帧 542

18.1.4 寄存器变量 543

18.1.5 外部标识符的长度 545

18.1.6 判断堆栈帧布局 545

18.1.7 表达式的副作用 552

18.2 C和汇编语言的接口 554

18.3 运行时效率 555

18.4 总结 559

18.5 警告的总结 559

18.6 编程提示的总结 560

18.7 问题 560

18.8 编程练习 560

附录 部分问题答案 561

详情

本书覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题,通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。本书是作者9年的编程及教学的经验积累。

图书摘要

相关图书

代码审计——C/C++实践
代码审计——C/C++实践
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
大规模C++软件开发 卷1:过程与架构
大规模C++软件开发 卷1:过程与架构
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++函数与算法速查宝典
C/C++函数与算法速查宝典
C程序设计教程(第9版)
C程序设计教程(第9版)

相关文章

相关课程