A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.Yan 中级黑马   /  2015-11-22 23:59  /  1187 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

若有说明: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代替,即可确定选项
(可以理解吧?)

5 个回复

倒序浏览
确实需要细心的分析啊
回复 使用道具 举报
确实需要细心的分析啊、、、
回复 使用道具 举报
不错哈。。。。。。
回复 使用道具 举报
cube川 来自手机 中级黑马 2015-11-25 15:12:10
报纸
顶一个。。
回复 使用道具 举报
顶一个。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马