2014-10-31 101 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