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

打印結果:

如果想要更加直觀的感受指針引用,我們可以參考第二篇博文進行查看,寫的非常的好。

第一篇文章是關於指針引用的文字說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM