链表c++/c,地址,指针

img


为什么tmp和tmp2的地址会改变,以及为什么他们的地址会相同呢?求各位给个建议

tmp和tmp2的地址会改变是因为你用 tmp = tmp->next;此时你的tmp指向了tmp的next,然后又通过while判断tmp->next是不是NULL,循环进来以后,此时tmp的值tmp的next,然后又执行tmp = tmp->next,此时tmp就是第一次的tmp->next->next了,如此循环下去,直到为NULL为止。
地址会相同是因为一开始tmp和tmp2就是一样的指向了mb,同时也 tmp = tmp->next; tmp2 = tmp2->next;