为何这段代码没有返回值程序却能正常运行,且结果符合预期
ListNode* ReverseList(ListNode* pHead)
{
if (pHead == nullptr)
{
return nullptr;
}
ListNode* pre = nullptr;
ListNode* mid = pHead;
ListNode* last = mid->m_pNext;
while (mid->m_pNext != nullptr)
{
last = mid->m_pNext;
mid->m_pNext = pre;
pre = mid;
mid = last;
}
mid->m_pNext = pre;
}
这是调用:
ListNode* pReversedHead = ReverseList(pHead);
我在你的函数后面加了一句,发现返回的就是函数最后一行那个变量的地址。你原来的函数最后一行的变量刚好是反转后的头地址,因此正确。
要看你完整的代码,没有return,返回值是随机的,不同编译器不同,如果正好eax寄存器上是head指针,那么就正好能返回(假设一般编译器返回eax寄存器作为返回值)