/* #include <stdio.h>
int main()
{ int a[10],*p=a,j;
for(j=0;j<10;j++)
scanf("%d",p++);
for(j=0;j<10;j++)
printf("%3d",*p++);
printf("n");
}
这个程序中第一个for循环结束时,p已指向a[10],已经超出了a数组的范围,再执行第二个for循环,p指向的都不是a 数组的元素范围。因此,输出的数据不是我们输入的数据。要想程序能正确输出我们输入的数据,应如何修改程序?
方法一:这个程序中第一个for循环结束时,p已指向a[10],已经超出了a数组的范围,再执行第二个for循环,p指向的都不是a数组的元素范围。因此,输出的数据不是我们输入的数据。要想程序能正确输出我们输入的数据,应该在第二个for循环之前使p指向a数组的起始地址,程序应改为:*/
#include <stdio.h>
int main()
{int a[10],*p=a,j;
for(j=0;j<10;j++)
scanf("%d",p++);
p=a;//将p指向数组a的起始地址。
for(j=0;j<10;j++)
printf("%3d",*p++);
printf("n");
}
运行结果是:
![1719153b77d420bfd673e7f4f9119567.png](https://img-blog.csdnimg.cn/img_convert/1719153b77d420bfd673e7f4f9119567.png)
∥方法二:
#include <stdio.h>
int main()
{int a[10],*p=a,j;
for(j=0;j<10;j++)
scanf("%d",p++);
for(j=0;j<10;j++)
printf("%3d",a[j]);//用数组下标来指定输出的数组元素
printf("n");
}
运行结果:
![46be3979e1bbffa1695d76b968a8386d.png](https://img-blog.csdnimg.cn/img_convert/46be3979e1bbffa1695d76b968a8386d.png)