c++用指针,编写函数实现将大小为n的数组循环右移m个位置,写完之后编译都没通过……求大佬指教

#include<iostream>
#include<cstring>
using namespace std;
void move(int*p,int n,int m)
{
int*s,t;
s=p;
for(t=0;t<n;t++){
if((t+m)<n)
*s=*(p+t+m);
else
*s=*(p+t+m-n);
*s++;
}
strcpy(p,s);
}
int main()
{
int m,n;
cin>>n>>m;
int a[n+1];
cin>>a;
move(a,n,m);
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}

第一,你这不是右移,是左移。第二,*s++是什么鬼?指针指向下一个是直接自加,即s++。第三,指针本来就是指向内存的,最后的strcpy要来做什么!第四,左移之后,没有把最后的m长度清零,还会保留着数据。追答

说明一下,如果你是循环移动,第四点就不算问题。

温馨提示:答案为网友推荐,仅供参考
相似回答