征服C指针(第2版)

征服C指针(第2版)

编辑推荐

本书适合C语言中级学习者阅读,也可作为计算机专业学生学习C语言的参考。

内容简介

本书以C语言中的重难点“指针”为主题,提供了程序员所需的深入而完整的指针知识。作者结合多年的编程经验和感悟,从C指针的概念讲起,通过实验一步一步地揭示了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧,还通过独特的方式告诉读者怎样解读C语言那些让人“纠结”的声明语法,以及如何绕过C指针的陷阱等。第2版基于64位操作系统对内容进行了大幅修订,新增了对ISO-C99、C11标准下相关内容的介绍等。

本书非常适合C语言中级学习者阅读,也可作为计算机专业学生学习C语言的参考。

作者简介

作者前桥和弥,1969年出生,著有《征服C指针》、《彻底掌握C语言》、《Java之谜和陷阱》等。其一针见血的“毒舌”文风和对编程语言深刻的见地受到广大读者的欢迎。

章节目录

版权信息

版权声明

前言

第 0 章 本书目标与读者对象

0-1 本书目标

0-2 读者对象与内容结构

第 1 章 打好基础——预备知识和复习

1-1 C 语言是什么样的语言

1-1-1 C 语言的发展历程

1-1-2 不完备和不统一的语法

1-1-3 C 语言“圣经”——K&R

1-1-4 ANSI C 之前的 C 语言

1-1-5 ANSI C(C89/90)

1-1-6 C95

1-1-7 C99

1-1-8 C11

1-1-9 C 语言的理念

1-1-10 C 语言的主体

1-1-11 C 语言曾是只能使用标量的语言

1-2 内存和地址

1-2-1 内存和地址

1-2-2 内存和变量

1-2-3 内存和程序运行

1-3 关于指针

1-3-1 恶名昭著的指针究竟是什么

1-3-2 和指针的第一次亲密接触

1-3-3 地址运算符、间接运算符、下标运算符

1-3-4 指针和地址之间的微妙关系

1-3-5 指针运算

1-3-6 何谓空指针

1-3-7 实践——从函数返回多个值

1-4 关于数组

1-4-1 使用数组

1-4-2 数组与指针的微妙关系

1-4-3 下标运算符 [] 与数组毫无关系

1-4-4 为何存在指针运算这种奇怪功能

1-4-5 别再滥用指针运算了

1-4-6 试图将数组作为函数参数传递

1-4-7 声明函数形参的方法

1-4-8 C99 中的可变长数组

第 2 章 做个实验——C 语言是怎样使用内存的

2-1 虚拟地址

2-2 C 语言中内存的使用方法

2-2-1 C 语言中变量的种类

2-2-2 尝试输出地址

2-3 函数与字符串字面量

2-3-1 只读内存区域

2-3-2 指向函数的指针

2-4 静态变量

2-4-1 什么是静态变量

2-4-2 分割编译与链接

2-5 自动变量(栈)

2-5-1 内存空间的“重复使用”

2-5-2 函数调用究竟发生了什么

2-5-3 自动变量的引用

2-5-4 典型的安全漏洞——缓冲区溢出漏洞

2-5-5 可变长参数

2-5-6 递归调用

2-5-7 C99 中的可变长数组(VLA)的栈

2-6 利用malloc()动态分配内存(堆)

2-6-1 malloc() 的基础知识

2-6-2 malloc() 是系统调用吗

2-6-3 malloc() 中发生了什么

2-6-4 free() 之后相应的内存空间会怎样

2-6-5 碎片化

2-6-6 malloc() 以外的动态内存分配函数

2-7 对齐

2-8 字节序

2-9 关于语言规范和实现——抱歉,前面的内容都是骗你的

第 3 章 语法揭秘——它到底是怎么回事

3-1 解读C语言声明

3-1-1 用英语阅读

3-1-2 解读 C 语言声明

3-1-3 类型名

3-2 C语言数据类型的模型

3-2-1 基本类型和派生类型

3-2-2 指针类型的派生

3-2-3 数组类型的派生

3-2-4 什么是指向数组的指针

3-2-5 C 语言中不存在多维数组

3-2-6 函数类型的派生

3-2-7 计算类型的长度

3-2-8 基本类型

3-2-9 结构体和联合体

3-2-10 不完全类型

3-3 表达式

3-3-1 表达式和数据类型

3-3-2 什么是左值——变量的两张面孔

3-3-3 数组→指针的转换

3-3-4 与数组和指针相关的运算符

3-3-5 多维数组

3-4 解读C语言声明(续)

3-4-1 const 修饰符

3-4-2 如何使用 const ?可以用到哪种程度

3-4-3 typedef

3-5 其他

3-5-1 函数形参的声明(ANSI C 版)

3-5-2 函数形参的声明(C99 版)

3-5-3 关于空的下标运算符 []

3-5-4 字符串字面量

3-5-5 关于指向函数的指针引发的混乱

3-5-6 强制类型转换

3-5-7 练习——解读复杂声明

3-6 请记住:数组与指针截然不同

3-6-1 你为什么感到混乱

3-6-2 在表达式中

3-6-3 在声明中

第 4 章 数组和指针的常见用法

4-1 基本用法

4-1-1 通过返回值以外的方法返回

4-1-2 将数组作为函数的参数传递

4-1-3 动态数组——通过 malloc() 分配的可变长数组

4-2 组合使用

4-2-1 动态数组的数组

4-2-2 动态数组的动态数组

4-2-3 命令行参数

4-2-4 通过参数返回指针

4-2-5 将多维数组作为函数的参数传递

4-2-6 将多维数组作为函数的参数传递(VLA 版)

4-2-7 通过 malloc() 分配纵横可变的二维数组(C99)

4-2-8 数组的动态数组

4-2-9 在考虑可变之前,不妨考虑使用结构体

4-2-10 可变长结构体(ANSI C 版)

4-2-11 柔性数组成员(C99)

第 5 章 数据结构——指针的真正用法

5-1 案例学习1:计算单词的使用频率

5-1-1 案例的需求

5-1-2 设计

5-1-3 数组版

5-1-4 链表版

5-1-5 添加查找功能

5-1-6 其他数据结构

5-2 案例学习2:绘图工具的数据结构

5-2-1 案例的需求

5-2-2 表示各种图形

5-2-3 Shape 类型

5-2-4 讨论——还有其他方法吗

5-2-5 图形的组合

5-2-6 通过指向函数的指针的数组分配处理

5-2-7 通往继承与多态之路

5-2-8 指针的可怕之处

5-2-9 那么,指针到底是什么呢

第 6 章 其他——拾遗

6-1 新的函数组

6-1-1 添加了范围检查的函数(C11)

6-1-2 无须使用静态存储空间的函数(C11)

6-2 陷阱

6-2-1 整数提升

6-2-2 如果在(老式的)C 语言中使用 float 类型的参数

6-2-3 printf() 与 scanf()

6-2-4 原型声明的光与影

6-3 惯用写法

6-3-1 结构体声明

6-3-2 自引用结构体

6-3-3 结构体的相互引用

6-3-4 结构体的嵌套

6-3-5 联合体

6-3-6 无名结构体和无名联合体(C11)

6-3-7 数组的初始化

6-3-8 指向 char 的指针的数组的初始化

6-3-9 结构体的初始化

6-3-10 联合体的初始化

6-3-11 指定初始化(C99)

6-3-12 复合字面量(C99)

参考文献

作者简介

看完了

征服C指针(第2版)是2021年由人民邮电出版社出版,作者[日]前桥和弥。

得书感谢您对《征服C指针(第2版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
统信UOS操作系统使用教程(第2版) 电子书

本书系统讲述统信桌面操作系统(统信UOS)的使用方法。
商务沟通:理论、案例与训练(第2版微课版) 电子书

本书结合大量案例,系统地介绍了商务沟通的理念、方法和技巧。
网络服务器配置与管理第3版 电子书

本书采用CentOS7、WindowsServer2016两个操作系统平台,介绍当今主流的服务器配置、管理技术。
平面设计制作标准教程:PhotoshopCC+IllustratorCC:微课版(第2版) 电子书

本书适合作为高等院校“数字媒体艺术”专业课程的教材,也可供Photoshop和Illustrator的初学者及有一定平面设计经验的读者阅读。
掌控24小时 电子书

本书探讨了个体如何在不同的时间段内提升效率,获得更大效能与效用。