This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

for(N = List->Head;N;N = N->Succ)

struct NODE{
    struct NODE Succ;
    struct NODE Prev;
};

struct LIST{
    struct NODE *Head;
    struct NODE *Tail;
    int count;
};

struct LIST *List;
struct NODE *N;

......
for(N = List->Head;N;N = N->Succ)
{
    ......
}
Compiler C51 changed value of List->Head because of the side effect of N = N->Succ.What can I do?

Parents Reply Children
  • the side effect of

    N = N->Succ;

    is that the compiler think about the statement as follow:

    List->Head = List->Head->Succ;


    What on earth made you believe that? N is a copy of List->Head, not an alias, so further modifications to N will not modify List->Head at all.

    You seem to be in serious need of a re-visit to your C textbooks to understand what pointers are, and how they work.