[問題] 103台聯大 計概

作者: tangenttien (點)   2015-07-10 20:02:24
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
想詢問這類題目要怎麼作答
作者: ccpz (OoOoOo)   2015-07-10 21:42:00
主要是注意 p1, p2 宣告為指標, 對他用 * 運算子代表讀取他儲存的記憶體位置的數字例如 p=2, 代表p存2號位置, *p 就是讀取 2號位置的值所以最後兩行: p1位置的值為0, p2位址為0, p2位置是p1p2, p1 位址的值為1, p1, p2 位址的值為3, p1位址為0因為沒有對位址0設定值, 所以*p1未知, *p2是3也可以畫格子, 裡面寫數字模擬一下
作者: tangenttien (點)   2015-07-10 22:35:00
大大說*p1=0 是指讀取0裡面的值 那為什麼經過p1=p2後p1和p2會存在同個位置但 *P不是讀值嗎?怎麼變成直接得到值
作者: ccpz (OoOoOo)   2015-07-11 12:40:00
例如說p1=2,代表p1指到第二格*p1=4,代表第二格內的值指定為4p1=p2沒有星號,所以是p2位置指定給p1,兩者就是指到P一格同一格

Links booklink

Contact Us: admin [ a t ] ucptt.com