利用指针反向输出数组中的五个数字,请问哪里有错

#include <stdio.h>
int main()
{
int p;
int a[5],i;
p=a;
for(i=0;i<5;i++)
{
scanf("%d",(p+i));
}
for(i=5;i>0;i--)
{
printf("%d",
(p+i));
}
}


#include <stdio.h>
int main()
{
    int* p;    //p定义成指针
    int a[5], i;
    p = a;
    for (i = 0; i < 5; i++)
    {
        scanf("%d", (p + i));
    }
    for (i = 4; i >= 0; i--)      //最大为4
    {
        printf("%d ", *(p + i));  //输出改成指针指向的内容
    }
}