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;
}
自己调试一下就ok了
#include <stdio.h>
int main()
{
int p=0xffffffff;
printf("%d\n",*&p);
return 0;
} 其实很简单 你就把指针想象成一个盒子 这个盒子里面装了一个地址但是这个盒子本身也有个地址 然后&是取址符*则是取值符*是取盒子的内容&则是取盒子的地址然后结合楼上朋友的例子就能很好的解释你的问题了希望能帮助到你 受教了。。 纠正一下,这里的&是引用的意思。 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; int* &p也就是一个指针p的引用呗,
你把int*看做一个类型A,我们都知道A&就是A的引用类型,
然后就明白int*&是什么了~ 我一直都觉得数据结构好高深。。。
页:
[1]