[问题] 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