今天写二叉树的时候遇到一个小问题,写了一个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指向这个节点。