C语言中的指针和变量
在上面的代码行中,对del所做的任何更改也会对RunQ进行更改。在第一行中,RunQ的所有值也被赋予del。我认为在这一行之后,对del的任何更改都不会影响RunQ。但是,在第二行之后,RunQ->next为Null。为什么会这样?我该怎么做才能使我对del所做的更改不影响RunQC语言中的指针和变量,c,pointers,C,Pointers,在上面的代码行中,对del所做的任何更改也会对RunQ进行更改。在第一行中,RunQ的所有值也被赋予del。我认为在这一行之后,对del的任何更改都不会影响RunQ。但是,在第二行之后,RunQ->next为Null。为什么会这样?我该怎么做才能使我对del所做的更改不影响RunQ struct TCB_t *del = RunQ; del->next = NULL; 或 struct TCB_t del = *RunQ; del.next = NULL; 你可能想复制那个对象。我建议
struct TCB_t *del = RunQ;
del->next = NULL;
或struct TCB_t del = *RunQ;
del.next = NULL;
你可能想复制那个对象。我建议你多读一些指针,因为你似乎误解了它们是什么。你所观察到的是预期行为。指针指向其他事物。第一行使
del
指向与RunQ
相同的对象;del.next=NULL代码>否,在上述代码中,对del
所做的更改不会对RunQ
进行更改。但是,对del
指向的对象所做的更改(例如del->next
)也会对RunQ
指向的对象所做的更改(例如RunQ->next
),因为这两个指针指向同一对象。确保你非常清楚地理解这一点(指针与它所指向的东西不同),因为你在一行中发布了几个问题,都有相同的问题。在采用这一点之前,确保仔细阅读深层副本与浅层副本。
struct TCB_t newRunQ = *RunQ;
struct TCB_t *del = &newRunQ;
del->next = NULL;