今天写二叉树的时候遇到一个小问题,写了一个create_node函数用来创建一个二叉树的节点。代码如下:
void create_node(node_t **pnode)
{
node_t *tmp;
tmp = *pnode;
tmp = (node_t *)malloc(node_t);
tmp->data = 3333;
}
用如下方式调用:
node_t *node = NULL;
create_node(&node);
我的目标是创建一个节点,数据为3333,然后把node指向该节点,可是,函数调用结束后,node依然为NULL
我们都知道,要想通过函数修改变量的值,必须把该变量的地址做为参数传给函数使用,这里我的确把node变量的地址
传给了create_node,但是create_node使用指针的方式不正确:程序只修改了局部变量tmp的值,没有影响到pnode指针所
指向的指针,即没修改node指针,正确的方式是:
void create_node(node_t **pnode)
{
node_t *tmp;
tmp = (node_t *)malloc(node_t);
tmp->data = 3333;
*pnode = tmp;
}
先创建节点,然后把node指向这个节点。
本文解决了一个二叉树节点创建函数的问题。原本的目标是创建一个含有特定数据的节点,并让外部指针指向它,但发现函数执行后指针并未改变。通过对函数内部指针操作的调整,实现了正确的节点创建及指针指向。

被折叠的 条评论
为什么被折叠?



