c - 如果指向指针的指针为 NULL,那么指针是否也必须为 NULL?
问题描述
考虑我有一个结构
typedef struct point_t
{
int x;
int y;
}POINT;
我为 POINT 创建了一个指向指针的指针并将其初始化为NULL
.
POINT **ppPoint = NULL;
也应该*ppPoint
退货NULL
?
解决方案
这里有 2 层指针的事实实际上是无关紧要的。事实上,你的外部指针NULL
意味着取消引用它是非法的。因此,询问通过取消引用它会获得什么价值是没有意义的。
考虑一下:
int *p = NULL; // modern practice would be to use nullptr anyway
if (0 == *p) // this is Undefined Behaviour!
{
// do something, maybe?
}
您只是在其中添加了另一层,而不是int
, 您有point_t*
,但这确实没有区别。
未定义行为的事情是任何事情都可能发生!你的程序可能会崩溃,或者它看起来可以工作,或者它有时会给你垃圾值,或者它可能......
推荐阅读
- python - 如何使用熊猫忽略具有特定值的文件
- graphql - 需要澄清 GraphQL 全局对象识别规范中描述的根查询类型上的“节点”字段
- c++ - 如何知道符号来自的确切文件
- node.js - 从带有附件的 Gmail 中读取邮件 - Node.js
- python - 有没有人尝试在 Apache Superset 中实现多租户
- c# - 使用 C# 处理 Microsoft Excel 电子表格部署问题
- javascript - 检查元素是否存在而无需添加暂停
- python - Pytorch:将两个高维张量 (2, 5, 3) * (2, 5) 乘以 (2, 5, 3)
- r - R purrr::partial -- 它如何处理部分化的参数?
- axios - axios 帖子上的 net::ERR_EMPTY_RESPONSE