問題(Question):
最近剛開始自學程式語言
C語言的指標和參考(頭疼啊~)
就以我的理解是以下:
1.int *p;
意指 p是一個指向另一個整數變數的記憶體位置的整數指標變數
2.
int m = 0;
int &n = m;
意指 n是m的別名(alias),也就是說n代表m這個變數
3.問題:
如下方網址之程式碼
跑出的結果如下附圖
前三行是
iptr = 0x7ffc59161654
&iptr = 0x7ffc59161658
*iptr = 5
想請問第二行&iptr的記憶體位址與iptr記憶體位址,為什麼會不一樣?
而&是取址,*是取值,
因為&iptr是「iptr所指向的記憶體位址」的參考,
也就是&iptr是iptr的別名?
而這個別名&iptr變數在另一個記憶體的位置儲存在0x7ffc59161658
與iptr本名儲存在記憶體的位置不同,
而&iptr的記憶體「內容」則是記錄了iptr指向「i」的記憶體位置,
因此,&iptr在記憶體0x7ffc59161658
所存的內容為0x7ffc59161654 ?
是這樣理解的嗎?
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://ideone.com/rWF65Z
補充說明(Supplement):