gpt4 book ai didi

c - 初始化多个节点时出现段错误

转载 作者:行者123 更新时间:2023-11-30 17:10:13 26 4
gpt4 key购买 nike

我正在用 C 语言开发二叉搜索树。我在初始化多个节点时遇到问题。

typedef struct Node Node;

struct Node{
int* data;
Node* leftChild;
Node* rightChild;
Node* parent;
};

void initNode(Node* node, int* data){
node->data = data;
node->leftChild = NULL;
node->rightChild = NULL;
node->parent = NULL;
}

当仅调用一次 initNode() 时,上面的代码似乎工作正常。但是,如果我尝试进行第二次调用,则会出现段错误。

我的主要内容如下:

int main(){
Node* node;
Node* node2;
int a = 12;
int b = 15;

initNode(node, &a);

printf("%i \n", *node->data);

}

这有效。但是,如果我这样做:

int main(){
Node* node;
Node* node2;
int a = 12;
int b = 15;

initNode(node, &a);
initNode(node2, &b);

printf("%i \n", *node->data);

}

我遇到段错误。任何想法为什么会发生这种行为?

最佳答案

您尚未为节点或节点2 分配内存。由于两个指针都分配在堆栈上,因此它们将具有垃圾值。第一个程序通过完全是偶然。

关于c - 初始化多个节点时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961147/

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