foureyes 发表于 2014-5-26 22:20:22

int *&p 怎么理解?

#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;
}

oggplay 发表于 2014-5-26 22:27:32

自己调试一下就ok了
#include <stdio.h>


int main()
{
int p=0xffffffff;
printf("%d\n",*&p);
return 0;
}   

ぜBaby_小小 发表于 2014-5-26 23:13:56

其实很简单   你就把指针想象成一个盒子   这个盒子里面装了一个地址但是这个盒子本身也有个地址   然后&是取址符*则是取值符*是取盒子的内容&则是取盒子的地址然后结合楼上朋友的例子就能很好的解释你的问题了希望能帮助到你

hackex 发表于 2014-5-26 23:35:19

受教了。。

AepKill 发表于 2014-5-27 21:55:05

纠正一下,这里的&是引用的意思。

santaclaus 发表于 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;

帅鸟_Josh 发表于 2014-5-27 23:00:11

int* &p也就是一个指针p的引用呗,
你把int*看做一个类型A,我们都知道A&就是A的引用类型,
然后就明白int*&是什么了~

viincy 发表于 2014-5-27 23:42:25

我一直都觉得数据结构好高深。。。
页: [1]
查看完整版本: int *&p 怎么理解?