求教C++习题答案以及解题过程和思路

问题描述:

求教C++习题答案以及解题过程和思路
若有说明:int n=2,*p=&n,*q=p;则以下非法的赋值语句是:
A p=q; B *p=*q; C n=*q; D p=n;
这题我怎么感觉题上的*p=&n就有问题呢?可以这样赋值吗?另外就是答案我也没太明白该选什么!哪个是非法的啊?

*p=&n
您可以理解成
int *p;
p=&n;
这只不过是两部合一步了
第四个是错误的
大概解释是n=2 ,n的地址给p,p的值给q 就是说 p,q都存放n的地址
所以a 是 p=q 就是n的地址=n的地址
b是 n=n
c是n=n的地址所在单元的值(就是n呗)
d 把一个数付给一个指针 那么p就只想内存地址2(因为n=2)所以这个是非法的