关于 动态分配 指针解决方案

关于 动态分配 指针
程序用c语言实现的功能是:输入一个数n,然后任意输入n个数,为这n个数动态分配空间,然后输入n个数
#include<stdio.h>
#include<stdlib.h>

void  main(){
int n,i,*p,*temp;
scanf("%d",&n);

if((p=(int *)malloc(sizeof(int)*n))==NULL){
printf("not able to allocate memory!\n");
exit(1);
}


for(temp=p;temp<p+n;temp++)
scanf("%d",temp);

for(i=0;i<n;i++)
printf("%d ",*(temp+i) );

}

这是错误输出,不明白为什么会这样?
关于 动态分配 指针解决方案

------解决方案--------------------
第一个循环结束,temp位置已经被改变