Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

13.6.4 指针问题

与数组类似,指针经常被过度使用以及误用。这类问题通常同时涉及指针和数组,我们将在本节总结这些问题。特别地,指针相关的所有严重问题通常都涉及意外访问:试图访问的东西不是期待类型的对象,并且其中很多问题都涉及对数组范围之外数据的访问。在本节中我们主要考虑以下问题:

·使用空指针进行数据访问。

·使用未初始化的指针进行数据访问。

·对数组结尾之后的数据进行访问。

·对已释放对象的访问。

·对已离开作用域的对象进行访问。

在所有的情况下,对于编程者而言,一个实际的问题是所有真正的访问语句看起来都完全无辜;问题“不过”是指针被赋予的值令指针的使用变成了非法。更糟糕的是(通过指针写数据的情况下),这些问题可能会在很长时间后才会显现,而表现出来的现象是一些明显无关的对象被破坏。让我们考虑下面这个例子:

不要用空指针进行数据访问:

显然,在实际程序中,这种问题通常发生在指针初始化和指针使用之间还有一些其他代码的情况。特别地,向一个函数传递p然后又从函数接收p作为返回结果是很常见的。我们建议不要向函数传递空指针,但如果你不得不这么做,应在使用之前检测空指针:

并且

使用引用代替指针(见12.9.1节)和使用异常来报告错误(见5.6节和14.5节)是避免空指针的主要工具。

对你的指针进行初始化: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252