指针与冒泡排序法的问题

为什么这个代码输出的结果不对,求修改
原题

img


#include<stdio.h>
#define N 10
void sort(int *x,int n)
{    int i,j,k,t;
     for(i=0;i<n-1;i++)
     {        
         k=i;      
         for(j=i+1;j<n;j++)                
             if(x[k]>x[j])            
                   k=j;
              t=x[i],x[i]=x[k],x[k]=t;
     }
}
void main()
{       
    int a[N],n,*p;
    scanf("n=%d",&n);              
    for(p=a;p<a+n;p++)              
        scanf("%d",p);         
    sort(&p,n);                 
    for(p=a;p<a+n;p++)      
        printf("%3d",*p);      
}

你输入的内容截屏看看
21行sort函数调用之前,要加上p=a,否则p在前面排序值后,指向了数组最后一个元素值后的地址了啊

img


这里是输入的n=数值吗?