Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的指针和变量_C_Pointers - Fatal编程技术网

C语言中的指针和变量

C语言中的指针和变量,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; 你可能想复制那个对象。我建议

在上面的代码行中,对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;

你可能想复制那个对象。我建议你多读一些指针,因为你似乎误解了它们是什么。你所观察到的是预期行为。指针指向其他事物。第一行使
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;