一个小问题,如何用函数修改变量的值

本文解决了一个二叉树节点创建函数的问题。原本的目标是创建一个含有特定数据的节点,并让外部指针指向它,但发现函数执行后指针并未改变。通过对函数内部指针操作的调整,实现了正确的节点创建及指针指向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值