黑马程序员技术交流社区

标题: 关于C语言指针的问题 [打印本页]

作者: greatboygirl    时间: 2015-5-7 20:45
标题: 关于C语言指针的问题
学指针以来一看到指针就发憷

一道基础测试题 求解 要求带分析分析
1、设有定义int a[]={1,3,5,7,9},*p=a;结果为7的表达式是()。
A) *(p+3)
B) *(p+4)
C) *p+3
D) *p+4
作者: 好梦留人    时间: 2015-5-7 21:06
选A吧,*(p+3)是直接取p后面第3个位置的值
作者: ios专用    时间: 2015-5-7 22:21
没有*p+的写法,所以c d错误,数组是从0开始,所以*(P+3)就是第4个数字7
作者: cui0wei0    时间: 2015-5-7 22:35
a[3] = 7;*(p+3)就是p[3]
作者:   张恒宇    时间: 2015-5-7 23:56
本帖最后由   张恒宇 于 2015-5-7 23:59 编辑

*p+3是对p先取值再+3,而*(p+3)是将p的位置后移3位!*p从a[0]取值即*(p+3)=a[3]=5!所以应该是*(p+4)=a[4]=7....个人观点
作者: 梦初醉    时间: 2015-5-8 00:25
A  指针*(p+1) 表示的是地址中 *p指向的数组地址 加4个字节   {(*p)=1,(*(p+1))=3,(*(p+2))=5,(*(p+3))=7,(*(p+4))=9}
作者: CornerFly    时间: 2015-5-8 11:07
选A  *P= a就是把数组的首地址赋值给指针P,通过P+3 得到第四个元素的地址,再*一下,取出第四个元素的值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2