若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D )。
A. p=q; B. *p=*q; C. a=*q; D. q=a;
这一题看似简单,但其实也有值得深究的地方,觉得对指针定义不是很清楚的同学会有一些帮助:
// 首先"*",在定义和应用的时候,意义是不一样的,定义时是表示定义一个int * 类型的指针,而在非定义的时候被视为一个运算符,取相应地址内所存取的内容,明白了这一点,这一题就可以做了.
首先p表示的就是a的地址,然后定义*q=p,即可以看成是*q=&(*p) //& 和* 是可以抵消的
即是对*p取地址,而*p即是a的值,注意是值!不是地址!所以得到的就是&a.
*q=&a , *p=&a.
这样看来所有的q都可用p代替,即可确定选项
(可以理解吧?) |
|