首页 > 解决方案 > 如果指向指针的指针为 NULL,那么指针是否也必须为 NULL?

问题描述

考虑我有一个结构

typedef struct point_t
{
  int x;
  int y;
}POINT;

我为 POINT 创建了一个指向指针的指针并将其初始化为NULL.

POINT **ppPoint = NULL;

也应该*ppPoint退货NULL

标签: cpointersnull

解决方案


这里有 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*,但这确实没有区别。

未定义行为的事情是任何事情都可能发生!你的程序可能会崩溃,或者它看起来可以工作,或者它有时会给你垃圾值,或者它可能......


推荐阅读