[問題] 想釐清指標(pointer)與參考(reference)
問題(Question):
最近剛開始自學程式語言
C語言的指標和參考(頭疼啊~)
就以我的理解是以下:
1.int *p;
意指 p是一個指向另一個整數變數的記憶體位置的整數指標變數
2.
int m = 0;
int &n = m;
意指 n是m的別名(alias),也就是說n代表m這個變數
3.問題:
如下方網址之程式碼
跑出的結果如下附圖
https://imgur.com/dJAmBIr

前三行是
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):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.166.196.107
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1556835364.A.327.html
※ 編輯: ptter0619 (218.166.196.107), 05/03/2019 06:37:39
推
05/03 07:19,
6年前
, 1F
05/03 07:19, 1F
→
05/03 07:19,
6年前
, 2F
05/03 07:19, 2F
推
05/03 07:22,
6年前
, 3F
05/03 07:22, 3F
→
05/03 07:22,
6年前
, 4F
05/03 07:22, 4F
→
05/03 09:08,
6年前
, 5F
05/03 09:08, 5F
推
05/03 11:39,
6年前
, 6F
05/03 11:39, 6F
→
05/03 11:40,
6年前
, 7F
05/03 11:40, 7F
→
05/04 09:56,
6年前
, 8F
05/04 09:56, 8F
→
05/04 09:56,
6年前
, 9F
05/04 09:56, 9F
→
05/04 09:56,
6年前
, 10F
05/04 09:56, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章