这个是指针的引用
通俗的讲就是给原来的指针重新起一个名字,使得两个指针的意思是相同的。
这里有一篇文章的地址:https://zhidao.baidu.com/question/334477425.html
int *(&p)是指针变量的引用。 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。
引用就是给变量起个别名 ,这种变量必须初始化 。
如int *a = &b; int *(&p) = a;
p不占用内存,它只是a的别名,就像一个人两个名字而已。 所以p指针所指向的内容与a指针所指向的内容相同,即*a == *p;
p在内存中存放的地址与a在内存中存放的地址相同,即 &p == &a。
下面通过代码的实际例子进行让大家感受一下,这里有一篇博客和大家进行分享:
funone(int *&pa,int *&pb)
#include<iostream> using namespace std; void funone(int *&pa,int *&pb) {//可以说实现了双向传递,内部和外部的两个指针都影响。 cout << "进入funone函数里面:" << endl; cout << "pa:"<<pa << " pb:"<<pb << endl; cout << "a:" << *pa << " b:" << *pb << endl; int *temp = pa; pa = pb; pb = temp; cout << "在funone函数里面,进行指针的地址交换之后:"<< endl; cout << "pa:" << pa << " pb:" << pb << endl; cout << "a:" << *pa << " b:" << *pb << endl << endl; } int main() { int a = 100; int b =200; int *pa = &a; int *pb = &b; cout << "执行funone(pa,pb)之前:"<<endl; cout<<"pa指向的内容:"; cout << *pa << " pb指向的内容:" << *pb << endl << endl; funone(pa,pb); cout << "执行funone(pa,pb)之后:" << endl; cout <<"pa指向的内容:"<< *pa <<" pb指向的内容:"<< *pb << endl; cout << "a的地址:"<<&a << " b的地址:" << &b << endl; cout << "b的地址(pa):"<<pa << " a的地址(pb):" << pb << endl; cout << endl << endl; return 0; } ———————————————— 版权声明:本文为CSDN博主「你是木头人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/chen1083376511/article/details/78571338
打印结果:
如果想要更加直观的感受指针引用,我们可以参考第二篇博文进行查看,写的非常的好。
第一篇文章是关于指针引用的文字说明。