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

В строке кода выше любые изменения, внесенные в del, также выполняются в RunQ. В первой строке все значения RunQ также задаются del. Я понял, что после этой строки любые изменения в del не повлияют на RunQ. Однако после второй строки RunQ-> next - Null. Почему это и что мне делать, так что изменяет мне сделать, чтобы дель не влияют RunQУказатели и переменные в C

+0

Вы можете скопировать этот объект. – moooeeeep

+1

Я бы посоветовал вам еще немного почитать указатели, потому что вы, кажется, неправильно понимаете, что это такое. То, что вы наблюдаете, - это ожидаемое поведение. – skrrgwasme

+0

указатели * пункт * к другим вещам. Первая строка делает 'del' точкой того же объекта, что и' RunQ'. – crashmstr

ответ

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

Смежные вопросы