這個是指針的引用
通俗的講就是給原來的指針重新起一個名字,使得兩個指針的意思是相同的。
這里有一篇文章的地址: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
打印結果:
如果想要更加直觀的感受指針引用,我們可以參考第二篇博文進行查看,寫的非常的好。
第一篇文章是關於指針引用的文字說明。