[問題] 103台聯大 計概

看板TransCSI作者 (點)時間8年前 (2015/07/10 20:02), 編輯推噓12(1203)
留言15則, 2人參與, 最新討論串1/1
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

07/10 21:42, , 1F
主要是注意 p1, p2 宣告為指標, 對他用 * 運算子代表
07/10 21:42, 1F

07/10 21:43, , 2F
讀取他儲存的記憶體位置的數字
07/10 21:43, 2F

07/10 21:43, , 3F
例如 p=2, 代表p存2號位置, *p 就是讀取 2號位置的值
07/10 21:43, 3F

07/10 21:45, , 4F
所以最後兩行: p1位置的值為0, p2位址為0, p2位置是p1
07/10 21:45, 4F

07/10 21:46, , 5F
p2, p1 位址的值為1, p1, p2 位址的值為3, p1位址為0
07/10 21:46, 5F

07/10 21:46, , 6F
因為沒有對位址0設定值, 所以*p1未知, *p2是3
07/10 21:46, 6F

07/10 21:47, , 7F
也可以畫格子, 裡面寫數字模擬一下
07/10 21:47, 7F

07/10 22:35, , 8F
大大說*p1=0 是指讀取0裡面的值 那為什麼經過p1=p2
07/10 22:35, 8F

07/10 22:37, , 9F
後p1和p2會存在同個位置但 *P不是讀值嗎?怎麼變成
07/10 22:37, 9F

07/10 22:37, , 10F
直接得到值
07/10 22:37, 10F

07/11 12:40, , 11F
例如說p1=2,代表p1指到第二格
07/11 12:40, 11F

07/11 12:41, , 12F
*p1=4,代表第二格內的值指定為4
07/11 12:41, 12F

07/11 12:42, , 13F
p1=p2沒有星號,所以是p2位置指定給p1,兩者就是指到
07/11 12:42, 13F

07/11 12:42, , 14F
P一格
07/11 12:42, 14F

07/11 12:43, , 15F
同一格
07/11 12:43, 15F
文章代碼(AID): #1LdxHIT4 (TransCSI)