I was writing some code for deleting the node from the doubly linked list and I came across a following syntax. Though I am able to understand what the syntax is doing but not able top get How is it possible below is the code
struct dll{
int data;
struct dll *next;
struct dll *prev;
};
and in some function in there is this syntax
else{
temp2=temp->prev;
temp2->next=temp->next;
temp->next->prev=temp2;
free(temp);
}
I know what temp->next
it makes the temp
pointer point to the next node
and from the syntax I could also understand that temp->next->prev
will make the pointer point to the prev pointer of the next node.
But the question is how this syntax is evaluated ?
I think you've misunderstood what the
->
operator does. It doesn't maketemp
point anywhere different, it just accesses a member from the structure pointed to by the first operand.https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
The syntax is evaluated left to right, and operator precedence means that the structure dereference happens before the assignment. So the third line (for example) is really this:-