在C语音中代表指针,&代表地址
在C++中代表指针,而&代表引用,而*&代表指针引用
指针是一个变量(它的值是一个地址),而指针引用指的是这个变量的引用;
在C++中如果参数不是引用的话会调用参数对象的拷贝构造函数,所以如果有需求想改变指针所指的对象(换句话说,就是要改变指针里面存的地址),就要使用指针引用
#include<iostream>
using namespace std;
typedef struct queue
{
int data;
queue *next;
};
void search1 (queue * &p1)
{
p1=new queue;
p1->data=2;
cout<<"p1->data="<<p1->data<<" search1 p1储存的地址"<<&p1<<endl;
}
void search2 (queue *p2)
{
p2=new queue;
p2->data=2;
cout<<"p2->data="<<p2->data<<" search2 p2储存的地址"<<&p2<<endl<<endl;;
}
int main()
{
queue *p1,*p2;
p1=new queue;
p1->data=1;
p2=new queue;
p2->data=1;
cout<<"p1->data="<<p1->data<<" p1储存的地址"<<&p1<<endl;
cout<<"p2->data="<<p2->data<<" p2储存的地址"<<&p2<<endl<<endl;
search1(p1);
search2(p2);
cout<<"p1->data="<<p1->data<<" p1储存的地址"<<&p1<<endl;
cout<<"p2->data="<<p2->data<<" p2储存的地址"<<&p2<<endl;
}
>>>
输出:
p1->data=1 p1储存的地址0x61fe18
p2->data=1 p2储存的地址0x61fe10
p1->data=2 search1 p1储存的地址0x61fe18
p2->data=2 search2 p2储存的地址0x61fdf0
p1->data=2 p1储存的地址0x61fe18
p2->data=1 p2储存的地址0x61fe10
Process returned 0 (0x0) execution time : 0.253 s
Press any key to continue.