【发布时间】:2013-03-05 14:33:21
【问题描述】:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a[]={1,2,3,4,5};
int b[]={0,0,0,0,0};
int *p;
int i;
p=b;
for( i =0 ; i<5 ; i++)
{
b[i]=a[i]+1;
*p=b[i]-1;
printf(" %i \t %i \t %i \n" ,*p,b[i],a[i]);
}
return 0;
}
我希望输出为:
*p b a
1 2 1
2 3 2
3 4 3
4 5 4
5 6 5
但它的显示如下:
*p b a
1 1 1
2 3 2
3 4 3
4 5 4
5 6 5
即使我在每个 a[] 中都添加了 +1。但对于第一次打印,它显示 1 个输出。为什么?
【问题讨论】:
-
*p=b[i]-1;每次都将b[0]的值替换为b[i]-1。因此,在i = 0的第一个循环中,您正在递减b[0]。