【发布时间】:2020-01-02 07:11:31
【问题描述】:
我正在建立一个名为 Node 的结构
typedef struct node{
struct node *left;
struct node *right;
struct node *parent;
}node;
以及在节点上运行的函数:
int test(node *old,node* new){
old->parent->right = new;
new->parent = old->parent;
}
好的,所以我制作了3个节点并设置它们之间的关系
node* me =malloc(sizeof(node));
node* me1 = malloc(sizeof(node));
node* me2 = malloc(sizeof(node));
me->right = me1;
me->left = me2;
me1->parent = me;
me2->parent = me;
test(me1,me);
1.然而,在test()之后,me1->parent->right改变了,而me1没有改变,这很奇怪,因为me1和me1->parent->right点是同一个地址。我想知道我是否在这里做出了错误的假设?
2.在函数test()中,如果我只用old替换old->parent->right,那么在函数调用之后,节点me1保持不变。在函数内部对指针进行操作后,指针不是被修改了吗,为什么在这种情况下不是?
【问题讨论】: