首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时需要初始化指向nullptr的指针?

何时需要初始化指向nullptr的指针?
EN

Stack Overflow用户
提问于 2017-12-25 13:27:06
回答 2查看 3.5K关注 0票数 2

当我阅读一些Qt示例代码时,通常会看到它们初始化指向nullptr的指针,例如:

代码语言:javascript
运行
复制
QPushButton *startButton = nullptr;

我对nullptr有一些非常基本的概念,但自从我开始学习C++以来,它从未真正使用过一次。因此,我想知道他们为什么要初始化指向nullptr的指针,而不是这样做:QPushButton *startButton;,这样做有什么好处,以及何时需要初始化指向nullptr的指针?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-25 13:34:36

在读取指针之前,需要初始化它。

如果有时只在读取值之前将其初始化为合理的值,那么在声明时将其初始化为nullptr是有意义的,因为这时您将能够检测到“尚未初始化到合理的东西”的nullptr

如果程序中有一条路径可以在初始化之前读取指针,则保留未初始化的指针是没有好处的,因为读取未初始化的变量是未定义的行为。

票数 6
EN

Stack Overflow用户

发布于 2017-12-25 13:34:35

何时需要初始化指向nullptr的指针?

在无法初始化指向对象地址的指针的情况下(可能是因为该对象还不存在,或者可能只存在于有条件的情况下),但您需要能够检查指针是否指向对象。

您可以知道,指向null的指针绝对不会指向现有的对象。如果正确定义程序的后置条件和不变量,则可以证明指针总是指向null或有效对象。

Null不是唯一的选项。另一个选项是初始化到始终存在的静态对象。在基于节点(即基于链接的)数据结构中,这是典型的解决方案,其中静态对象被称为哨兵节点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47969071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档