看板 TransCSI 關於我們 聯絡資訊
Whic is correct? int *p1; int *p2; p1= new int; p2= new int; *p1=0; p2=0; p2=p1; *p2=1; *p1=3; p1=0; (A)*p1 is 0 and *p2 is 1 (B)*p1 is 3 and *p2 is 1 (C)*p1 is unknown and *p2 is 3 (D)*p1 is 0 and *p2 is unknown (E)None of the above Ans C 想詢問這類題目要怎麼作答 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.48.55 ※ 文章網址: https://www.ptt.cc/bbs/TransCSI/M.1436529746.A.744.html
ccpz: 主要是注意 p1, p2 宣告為指標, 對他用 * 運算子代表 07/10 21:42
ccpz: 讀取他儲存的記憶體位置的數字 07/10 21:43
ccpz: 例如 p=2, 代表p存2號位置, *p 就是讀取 2號位置的值 07/10 21:43
ccpz: 所以最後兩行: p1位置的值為0, p2位址為0, p2位置是p1 07/10 21:45
ccpz: p2, p1 位址的值為1, p1, p2 位址的值為3, p1位址為0 07/10 21:46
ccpz: 因為沒有對位址0設定值, 所以*p1未知, *p2是3 07/10 21:46
ccpz: 也可以畫格子, 裡面寫數字模擬一下 07/10 21:47
tangenttien: 大大說*p1=0 是指讀取0裡面的值 那為什麼經過p1=p2 07/10 22:35
tangenttien: 後p1和p2會存在同個位置但 *P不是讀值嗎?怎麼變成 07/10 22:37
tangenttien: 直接得到值 07/10 22:37
ccpz: 例如說p1=2,代表p1指到第二格 07/11 12:40
ccpz: *p1=4,代表第二格內的值指定為4 07/11 12:41
ccpz: p1=p2沒有星號,所以是p2位置指定給p1,兩者就是指到 07/11 12:42
ccpz: P一格 07/11 12:42
ccpz: 同一格 07/11 12:43