指针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这个循环的大括号里面,它的有效作用域也仅仅在这个大括号里面,属于局部变量,程序一旦执行完这个大括号跳出去或者开始下一次循环,内部的变量就已经被释放了,自然不存在重复定义的结果。
一个是对象名,另一个是对象中的成员,只要对象中的成员之间不同名就行,已经有对象名作区分了。
是变量作用域的问题,在大括号内的变量是新定义的局部变量,即使名字同括号外的重名也是新的局部变量。而在同一作用域内定义两个同名的变量才会被当作重复定义。有帮助请采纳,谢谢!