请高手帮忙看下如下C语言程序

main(){inti,*p,a[5],b[5]={11,12,13,14,15};p=a;for(i=0;i<5;i++,p++)scanf("%d",p);for(i... main()
{
int i,*p,a[5],b[5]={11,12,13,14,15};
p=a;
for(i=0;i<5;i++,p++)
scanf("%d",p);
for(i=0;i<5;i++,p++)
printf("%d,%d,%d\n",a[i],b[i],*p);
}
若输入1 2 3 4 5
为什么输出结果不是:
1,11,5
2,12,11
3,13,12
4,14,13
5,15,14
而是:
1,11,11
2,12,12
3,13,13
4,14,14
5,15,15
请高手详细解答。
展开
 我来答
疯虫子_xx
2011-12-17 · TA获得超过101个赞
知道答主
回答量:67
采纳率:0%
帮助的人:70万
展开全部
1,11,1245048
2,12,1
3,13,1245120
4,14,4199193
5,15,1
Press any key to continue
这是我运行的结果
你的指针P在运行完第一个循环后已经指向的是a[4]后面的那个地址,所以在第二个循环的时候实际打印的是*(p+5)开头的变量,这些地址的变量值并不确定,所以应该会得到莫名其妙的结果
你的那个运行结果可能恰好p+5指向b[0]
38278757
2011-12-17 · TA获得超过723个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:241万
展开全部
不可能是你说的两种情况任何一种啊 因为你使用指针p对a进行赋值 和数组b没有任何关系 怎么可能输出数组b里面的内容?而且每次赋值后p的内容都改变了 也得不到你第一个输出结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式