qq_40832620
null丶丶
采纳率100%
2019-11-19 20:59

C++程序没有返回值却能正常运行

已采纳

为何这段代码没有返回值程序却能正常运行,且结果符合预期

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);
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • fyydhsw 星尘如我 2年前

    我在你的函数后面加了一句,发现返回的就是函数最后一行那个变量的地址。你原来的函数最后一行的变量刚好是反转后的头地址,因此正确。
    图片说明

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    要看你完整的代码,没有return,返回值是随机的,不同编译器不同,如果正好eax寄存器上是head指针,那么就正好能返回(假设一般编译器返回eax寄存器作为返回值)

    点赞 评论 复制链接分享

为你推荐