
请高手帮忙看下如下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
请高手详细解答。 展开
{
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
请高手详细解答。 展开
展开全部
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]
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]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询