设有定义int a[]={1,3,5,7,9},*p=a; while(*p!=3) p++; 结果为7的表达式是: *(p+2)能否详细解释下

 我来答
kaixingui2012
推荐于2018-04-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6136万
展开全部
int a[]={1,3,5,7,9},*p=a; //定义一个数组a,共五个元素;同时定义一个指针p指向数组a的首地址
p -> a[0]=1 即p是a[0]的地址
p+1 -> a[1]=3 p+1是a[1]的地址,下同
p+2 -> a[2]=5
p+3 -> a[3]=7
p+4 -> a[4]=9
while(*p!=3) p++; //*p是取地址中的内容(数据),当*p不是3时,p++完成向后移动一个数据

当*p==3时,p当前值为 原p+1 ,即指向a[1]
此时的p +1指向a[2]=5
所以,此时的p +2指向a[3]=7
即:*(p+2)==7
追问
怎么确定的p当前值为p+1呢?
追答
再读一遍我的回答哦
百度网友cb1bfc517
2012-11-02 · TA获得超过480个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:143万
展开全部
int a[]={1,3,5,7,9},
*p=a; // 将首个元素地址赋给p 此时*p=1
while(*p!=3)
{
p++; //做循环使p指向元素3的地址时停止 此时*p=3 p=&(a+2)
}
所以 结果为7的表达式是: *(p+2) 等价于 *(p+4)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzh刘振华0
2012-11-02 · 超过18用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:48.3万
展开全部
int a[]={1,3,5,7,9},*p=a; //p为指针,p指向int型数组a的首地址即 &a[0]
while(*p!=3) // *p 是p所指向的数组的元素 ,当*p 的值是3时退出while循环
p++; // p指向数组a的下一个元素。
当while循环结束时 p 指向 a[1]的地址,*p == a[1];
p+2 指向 a[1]下一个元素a[2]的下一个元素a[3],即p+2是指向a[3]的指针,所以*(p+2) 的值是7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孝感259283770
2012-11-02
知道答主
回答量:15
采纳率:0%
帮助的人:4.7万
展开全部
初始时p指向a数组的开始.
经过while(*p!=3) p++;
时p指向了3
所以p+2就是指向7这个位值.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式