有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,必须用指针 错在哪了

这个是程序
#include"stdio.h"
void swap(int *a,int *b,int m,int n)
{
int *p1=b,*p2=a;
for(b=b+m;b<(b+n);b++,a++)
*b=*a;
a=p2;b=p1;
for(b=p1;b<b+m;b++,a++)
*b=*(a+n-m-1);
for(p1;p1<b+5;p1++)
printf("%d",*p1);
}
main()
{
int a[5]={1,2,3,4,5},b[5],m,*p=b;
printf("input m :\n");
scanf("%d",&m);
swap(a,b,m,5);
#include"stdio.h"
void swap(int *a,int *b,int m,int n)
{
int *p1=b,*p2=a;
for(b=b+m;b<租举(p1+n);b++,a++)
*b=*a;
a=p2;b=p1;
for(b=p1;b<p1+m;b++,a++)
*b=*(a+n-m);
b=p1;
for(p1;p1<b+5;p1++)
printf("猛培%d",*p1);
}
int main()
{
int a[5]={1,2,3,4,5},b[5],m,*p=b;
printf("input m :\n");
scanf("%d"枝型唯,&m);
swap(a,b,m,5);
}
for(b=b+m;b<(b+n);b++,a++)和for(b=p1;b<b+m;b++,a++)这样操作指针只是对于指针做卖的地址进行了偏唯兆移,具体的指胡租值没变