C++ *和&


在c++中,當申明變量int *p 的時,表示p是一個儲存地址的變量;比如int *p=0,表示p指向地址為00000000的地址單元。當申明指針p之后,再用*p表示p指向的儲存空間的內容;&表示取變量的地址;

下面用一些代碼來解釋*和&的關系;

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int a=123;
 5     //&a表示a在內存中的地址,也就是123在內存中的地址
 6     cout<<"a: "<<a<<endl<<"a's address:"<<&a<<endl;
 7     //此時p是一個指針,指向a所在的位置
 8     int *p=&a;
 9     cout<<"p: "<<p<<endl;
10     //聲明p之后,在p之前添加*表示p指向內存的值
11     cout<<"p's value: "<<*p<<endl;
12     //同時p也是 一個變量,在內存中也有一個地址儲存它,但其地址不是a的地址
13     cout<<"p's address: "<<&p<<endl;
14     //試試*&組合使用是什么效果
15     cout<<"*&p: "<<*&p<<endl;
16     //&p是一個內存地址,*&p表示&p指向地址內存空間的值,在這里表示a的地址
17     cout<<"**&p: "<<**&p<<endl;
18     //剛才我們已經知道*&p是a的地址,那么**&p就表示a的值
19 return 0;}

 

申明一個int變量a,賦值為123;

通過&運算可以知道 a的地址為:0019FF3C

申明一個int指針p,賦值為:0019FF3C, 也就是a的地址

通過&運算可以知道p的地址為:0019FF38;

即在內存0019FF38儲存的數據是0019FF3C;

如果仔細觀察會發現p和a的地址是連續的,間隔為4,這與int是4個字節的數據類型的事實相符合

  * &
a 不存在 0019FF3C
p 123 0019FF38


免責聲明!

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



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