2014-10-31 68 views
1
struct TCB_t *del = RunQ; 
del->next = NULL; 

在上面的代码行中,对del执行的任何更改也会对RunQ进行。在第一行中,RunQ的所有值也被赋予给del。我认为在这一行之后,对del的任何改变都不会影响RunQ。但是在第二行之后,RunQ-> next是空的。这是为什么,什么做我这样做改变了我做出德尔不影响RunQC中的指针和变量

+0

您可能希望复制对象。 – moooeeeep 2014-10-31 17:00:20

+1

我建议你在指针上做更多的阅读,因为你似乎误解了它们。你正在观察的是预期的行为。 – skrrgwasme 2014-10-31 17:00:21

+0

指针*指向*其他的东西。第一行使'del'指向与'RunQ'相同的对象。 – crashmstr 2014-10-31 17:00:28

回答

3
struct TCB_t del = *RunQ; 
del.next = NULL; 


struct TCB_t newRunQ = *RunQ; 
struct TCB_t *del = &newRunQ; 
del->next = NULL; 
+0

请确保阅读_deep copy_ vs. _shallow copy_在采用之前。 – moooeeeep 2014-10-31 18:01:11