1
struct TCB_t *del = RunQ;
del->next = NULL;
在上面的代碼行中,對del執行的任何更改也會對RunQ進行。在第一行中,RunQ的所有值也被賦予給del。我認爲在這一行之後,對del的任何改變都不會影響RunQ。但是在第二行之後,RunQ-> next是空的。這是爲什麼,什麼做我這樣做改變了我做出德爾不影響RunQC中的指針和變量
struct TCB_t *del = RunQ;
del->next = NULL;
在上面的代碼行中,對del執行的任何更改也會對RunQ進行。在第一行中,RunQ的所有值也被賦予給del。我認爲在這一行之後,對del的任何改變都不會影響RunQ。但是在第二行之後,RunQ-> next是空的。這是爲什麼,什麼做我這樣做改變了我做出德爾不影響RunQC中的指針和變量
struct TCB_t del = *RunQ;
del.next = NULL;
或
struct TCB_t newRunQ = *RunQ;
struct TCB_t *del = &newRunQ;
del->next = NULL;
請確保閱讀_deep copy_ vs. _shallow copy_在採用之前。 – moooeeeep 2014-10-31 18:01:11
您可能希望複製對象。 – moooeeeep 2014-10-31 17:00:20
我建議你在指針上做更多的閱讀,因爲你似乎誤解了它們。你正在觀察的是預期的行爲。 – skrrgwasme 2014-10-31 17:00:21
指針*指向*其他的東西。第一行使'del'指向與'RunQ'相同的對象。 – crashmstr 2014-10-31 17:00:28