微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将树结构数据存储到 C 中的数组中,而无需在函数外部声明该数组

如何解决将树结构数据存储到 C 中的数组中,而无需在函数外部声明该数组

我正在尝试使用中序横向编写横向树结构数据的代码,并将所有树节点存储到数组中。

void inorderTraversal(AVLTreeNode *node,AVLTreeNode *nodesArray[],int *index)
{
    if (node == NULL)
        return;

    inorderTraversal(node->left,nodesArray,index);
    nodesArray[*index] = node;
    (*index)++;
    inorderTraversal(node->right,index);
}

如果我在主函数中首先声明 index 如下

int index = 0;

inorderTraversal(tree->root,&index);

但如果我只是在下面这样做,它就行不通。

inorderTraversal(tree->root,&0);

我怎么能只使用 0 传递给函数而不先在主函数中声明它?

解决方法

&0 没有意义,因为 & 运算符用于获取对象的地址。整数文字不是对象,因此没有地址。

如果你不打算在函数完成后使用 index 的值,你可以传递一个复合字面量的地址:

inorderTraversal(tree->root,nodesArray,&(int){0});

这会创建一个临时对象,该对象的地址可以被使用,并且在使用它的语句之后不再存在。

不过,我认为您希望保留此值,以便您知道 nodesArray 完成后 inorderTraversal 中有多少个值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。