首页 > 其他 > 详细

图示指针传值操作

时间:2014-03-16 19:53:28      阅读:599      评论:0      收藏:0      [点我收藏+]

传值操作

bubuko.com,布布扣
#include <iostream>
using namespace std;

struct ListNode
{
    int m_nValue;
    ListNode* m_pNext;
};

void createList(ListNode *head)
{
    head = new(ListNode);
    head->m_nValue = 1;
    head->m_pNext = NULL;
}
void deleteList(ListNode *p)
{
    ListNode *next = NULL;
    while(p != NULL)
    {
        cout << p->m_nValue << endl;
        next = p->m_pNext;
        delete p;
        p = NULL;
        p = next;
    }
}

int main()
{
    ListNode *head = NULL;
    createList(head);
    cout << head << endl;
    deleteList(head);
}
    
bubuko.com,布布扣

结果

0

分析

主函数中的指针head为传值调用,传到函数并没有改变主函数中的值,图示

bubuko.com,布布扣

改进的措施就是引用传值,直接操纵原指针。

改进1

bubuko.com,布布扣
#include <iostream>
using namespace std;

struct ListNode
{
    int m_nValue;
    ListNode* m_pNext;
};

void createList(ListNode *&head)
{
    head = new(ListNode);
    head->m_nValue = 1;
    head->m_pNext = NULL;
}
void deleteList(ListNode *p)
{
    ListNode *next = NULL;
    while(p != NULL)
    {
        cout << p->m_nValue << endl;
        next = p->m_pNext;
        delete p;
        p = NULL;
        p = next;
    }
}

int main()
{
    ListNode *head = NULL;
    createList(head);
    cout << head << endl;
    deleteList(head);
}
    
bubuko.com,布布扣

改进2

bubuko.com,布布扣
#include <iostream>
using namespace std;

struct ListNode
{
    int m_nValue;
    ListNode* m_pNext;
};

void createList(ListNode **head)
{
    *head = new(ListNode);
    (*head)->m_nValue = 1;
    (*head)->m_pNext = NULL;
}
void deleteList(ListNode *p)
{
    ListNode *next = NULL;
    while(p != NULL)
    {
        cout << p->m_nValue << endl;
        next = p->m_pNext;
        delete p;
        p = NULL;
        p = next;
    }
}

int main()
{
    ListNode *head = NULL;
    createList(&head);
    cout << head << endl;
    deleteList(head);
}
    
bubuko.com,布布扣

细节:->优先级高于*

图示指针传值操作,布布扣,bubuko.com

图示指针传值操作

原文:http://www.cnblogs.com/kaituorensheng/p/3603611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!