int* &p 讲解

这个是指针的引用

通俗的讲就是给原来的指针重新起一个名字,使得两个指针的意思是相同的。

这里有一篇文章的地址: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

打印结果:

如果想要更加直观的感受指针引用,我们可以参考第二篇博文进行查看,写的非常的好。

第一篇文章是关于指针引用的文字说明。

猜你喜欢

转载自www.cnblogs.com/littleswan/p/12450093.html