鱼C论坛

 找回密码
 立即注册
查看: 2127|回复: 7

int *&p 怎么理解?

[复制链接]
发表于 2014-5-26 22:20:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
#include <cstdlib>

using namespace std;


class myNode
{
    private:
        int data;
        myNode *lchild;
        myNode *rchild;
    public:
        myNode();
        friend class myBTree;
};
myNode::myNode()
{
    data=0;
    lchild=NULL;
    rchild=NULL;
}

class myBTree
{
    private:
    public:
        myBTree(){};
        void insert(myNode *&,int );
        void preorder(myNode *p);
        void inorder(myNode *p);
        void postorder(myNode *p);
};
void myBTree::insert(myNode *& p,int x)
{
    if(p==NULL)
    {
        p=new myNode;
        p->data=x;
        p->lchild=NULL;
        p->rchild=NULL;
    }
    else
    {
        if(x<=p->data)
        {
            insert(p->lchild,x);
        }
        else
        {
            insert(p->rchild,x);
        }
    }
}
void myBTree::inorder(myNode *p)
{
    if(p!=NULL)
    {
        inorder(p->lchild);
        cout<<p->data<<"-->";
        inorder(p->rchild);
    }
}
void myBTree::preorder(myNode *p)
{
    if(p!=NULL)
    {
        cout<<p->data<<"-->";
        preorder(p->lchild);
        preorder(p->rchild);
    }
}
void myBTree::postorder(myNode *p)
{
    if(p!=NULL)
    {
        postorder(p->lchild);
        postorder(p->rchild);
        cout<<p->data<<"-->";
    }
}
int main()
{
    cout << "Hello world!" << endl;
    myNode *head=NULL;
    myBTree *p=new myBTree;
    p->insert(head,6);
    p->insert(head,4);
    p->insert(head,8);
    p->insert(head,3);
    p->insert(head,5);
    p->insert(head,7);
    p->insert(head,9);


    p->inorder(head);
    cout<<endl;
    p->preorder(head);
    cout<<endl;
    p->postorder(head);
    cout<<endl;

    delete p;
    delete head;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-26 22:27:32 | 显示全部楼层
自己调试一下就ok了
#include <stdio.h>


int main()
{
  int p=0xffffffff;
  printf("%d\n",*&p);
  return 0;
}     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-26 23:13:56 | 显示全部楼层
其实很简单   你就把指针想象成一个盒子   这个盒子里面装了一个地址  但是这个盒子本身也有个地址   然后&是取址符  *则是取值符  *是取盒子的内容  &则是取盒子的地址  然后结合楼上朋友的例子就能很好的解释你的问题了  希望能帮助到你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-26 23:35:19 | 显示全部楼层
受教了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-27 21:55:05 | 显示全部楼层
纠正一下,这里的&是引用的意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-27 22:38:01 | 显示全部楼层
int a = 5;
int* pa = &a;
int* &p = pa; //p个是引用,是整型指针的引用。即p是指针pa的别名。
                       //对比,若int &p=a,则p是个整型数据的引用,即p是a的别名。
*p = 10;          //通过p指针(指向a)改变a的值。
printf("%d\n", a); //a==10;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-27 23:00:11 | 显示全部楼层
int* &p也就是一个指针p的引用呗,
你把int*看做一个类型A,我们都知道A&就是A的引用类型,
然后就明白int*&是什么了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-27 23:42:25 | 显示全部楼层
我一直都觉得数据结构好高深。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表