C++指针出现重定义的问题?

指针next为什么不会出现重定义的问题?

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* prev = nullptr;
        ListNode* curr = head;
        while (curr) {
            ListNode* next = curr->next;
            curr->next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
};

变量如果作用域相同的情况下,才会造成重复定义,比如都是全局变量,都是在函数开头定义的局部变量等。
next在while这个循环的大括号里面,它的有效作用域也仅仅在这个大括号里面,属于局部变量,程序一旦执行完这个大括号跳出去或者开始下一次循环,内部的变量就已经被释放了,自然不存在重复定义的结果。

一个是对象名,另一个是对象中的成员,只要对象中的成员之间不同名就行,已经有对象名作区分了。

是变量作用域的问题,在大括号内的变量是新定义的局部变量,即使名字同括号外的重名也是新的局部变量。而在同一作用域内定义两个同名的变量才会被当作重复定义。有帮助请采纳,谢谢!