小程序,红色部分为什么错解决方案
小程序,红色部分为什么错#includestdio.hvoid main(){int i,nints[20],*ppsprintf(\ninput n:)sc
小程序,红色部分为什么错
#include<stdio.h>
void main()
{ int i,n;
int s[20],*p;
p=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*(p+i));
}
[解决办法]
+++
[解决办法]方案一
我把你的程序求改了一下,又加了一个指针变量q,来记录数组的首地址
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,n;
int s[20],*p,*q;
p=q=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*q++);
system("pause");
return 0;
}
方案二
增加指针输出时*p++改成*--p也可以的
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,n;
int s[20],*p;
p=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*--p);
system("pause");
return 0;
}