c++:将数组中的n个数按相反顺序存放(用指针实现)。有没有大佬帮我看看哪里出了问题

#include
using namespace std;
void inv(int *x, int n)
{ int *p, t, *i, *j, m=(n-1)/2;
i=x; j=x+n-1; p=x+m;

for (; i<=p; i++,j--)
{ t=*i; *i=*j; *j=t;}
}

int main( )
{ int i, n,a[n];
cout<<"输入个数:";
cin>>n;
for(i=0;i cin>>a[i];
inv(a,n);

for (i=0;i<n; i++)
cout<<a[i]<<" ";
return 0;
}
输入数字在五个以下的时候结果没问题,但是大于五个数字的时候结果就是错的,为什么啊?

int i, n,a[n];
不要这么写
因为你不知道n是多少
可以用
int i, n,a[100];

不知道是你沾程序沾错了还是写错了,这个输入函数就有问题,我把改好的贴在下边

#include<iostream>
using namespace std;
void inv(int *x, int n)
{
    int *p, t, *i, *j, m = (n - 1) / 2;
    i = x; j = x + n - 1; p = x + m;

    for (; i <= p; i++, j--)
    {
        t = *i; *i = *j; *j = t;
    }
}

int main()
{
    int i, n;
    cout << "输入个数:";
    cin >> n;
    int *a=new int (n);
    for (i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    inv(a, n);
    for (i = 0; i < n; i++)
        cout << a[i] << " ";
    system("pause");
    return 0;
}