gpt4 book ai didi

c - 无法从以指针作为参数的函数内的主方法引用指针

转载 作者:行者123 更新时间:2023-11-30 14:46:44 25 4
gpt4 key购买 nike

我最近完成了“C 编程语言 - 第二版”,我认为下一步最好是使用 C 创建我自己的数据结构库。

我目前正在致力于实现标准二叉树,但我一直坚持插入方法。到目前为止,我已经创建了节点结构:

typedef struct node
{
int data;
struct node * rc;
struct node * lc;
}NODE;

我试图让插入方法在呈现树的根节点时起作用。以下是我如何创建根节点以及如何在 addNode() 函数中调用它:

int main() {
NODE * root = NULL;
addNode(12, root);

return 0;
}

我的 addNode() 函数的结构如下:

void addNode(int info, NODE * node)
{
if (node == NULL) {
node = (NODE *)malloc(sizeof(NODE));
node->data = info;
node->rc = NULL;
node->lc = NULL;
}
}

当我尝试从 main 方法显示存储在 NODE * 根中的“数据”的实际值时,出现段错误。经过一番探索,我意识到这样做的原因是我在 addNode() 方法中为节点分配的内存实际上并没有将 root 重新定义为新分配的内存,其值为“info”,而是创建一个单独的 NODE * 节点。

最终,我认为我的问题是我仍在尝试掌握 C 中的指针,但我将非常感谢任何关于如何修复我的代码的见解。 (如果我的 C 术语还不太清楚的话,提前抱歉)

最佳答案

问题在于,在 addNode 函数中,您实际上修改的是本地 node,而不是外部作用域中的实际变量。要解决此问题,您需要将一个指向指针传递给addNode中的NODE。另外,请不要强制转换 malloc 的结果,因为不需要它,并且它可能会隐藏错误,即您可能会忘记添加所需的 header 。

关于c - 无法从以指针作为参数的函数内的主方法引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com