循环 p++ 之后,p 就指向数组的末尾,你要想输出的话,要让 p 复位指向首元素
第一个for 循环后,指针p已指向无效区域,所以还要再令p=a,第二个for循环时,要使指针移位,所以应写成printf("a[%d]=%d",n,*(p+n);
printf("a[%d]=%d",n,*p);
这一句错了,在经过了上一个循环后p指向了a[30],也就是空的位置,运行到此处会报错,应改为
printf("a[%d]=%d",n,a[n]);
#include
main()
{
int a[30];
int n,*p;
p=a;
for(n=0;n<30;n++)
{
*p=2*n+1;
p++;
}
for(p=a,n=0;n<30;n++,p++)
{
printf("a[%d]=%d ",n,*p);
if((n+1)%10==0)
printf("\n");
}
}
改成这样就可以了,如果有问题可以追问
if后面少了个{