C-返回一个非传统的结构位置



如果我有某种树,并且我需要在该树中找到一个特定的节点,该节点本质上是null的(struct尚未初始化/malloc'ed)。

如果我想返回那个非常特定的非初始化的结构位置以便初始化,那会像:

一样
if (parentNode->childNode == NULL)
    return parentNode->childNode;

工作?还是返回null?我需要返回父节点吗?

我遇到的问题是,该特定节点可能是多种不同结构类型的孩子。我不确定如何在C中克服这一点,因为它不支持仿制药。有人有任何想法吗?

您无法返回null。这将不是可识别的位置。

但是您可以做的是:

  • malloc在找到它的位置的节点并返回Malloc返回的指针,
  • 您可以 return &(parentNode->childNode)(指向儿童点指针的指针)该函数可以将其设置为新节点或
  • return parentNode

我看不出仿制药如何缓解这个问题。

您可以返回该parentNode并将其child在其他地方初始化。

如果尚未初始化子节点,那么您将无法返回指针...如何将指针返回到尚不存在的东西?

您需要做的是将指针返回到父节点的指针,然后可以更改为指向子节点的新分配内存。

您可以返回null,但这是没有意义的。您可以将指针返回到值为null的指针:

typedef struct link {
        struct link *next;
        } LL;

LL **getTailPP(LL **ppHead)
{
    for( ; *ppHead; ppHead = &(*ppHead)->next ) {;}
    return ppHead;
}

相关内容

  • 没有找到相关文章

最新更新