请问这个c语言程序函数如何解读?
voidmove(int*a,intn,intm){int*p,array;array=*(a+n-1);for(p=a+n-1;p>a;p--)*p=*(p-1);*a...
void move(int* a, int n, int m)
{
int* p, array;
array = *(a + n - 1);
for (p = a + n - 1; p > a; p--)
*p = *(p - 1);
*a = array;
m--;
if (m > 0)
move(a, n, m);
} 展开
{
int* p, array;
array = *(a + n - 1);
for (p = a + n - 1; p > a; p--)
*p = *(p - 1);
*a = array;
m--;
if (m > 0)
move(a, n, m);
} 展开
1个回答
展开全部
这个函数的功能,就是把一个数组的所有元素向后移动,被移出的末位元素,填回到首位
void move(int* a, int n, int m){//a:数组首地址,n,数组元素个数,m,需要移动几次
int* p, array;
array = *(a + n - 1);// 把数组a的末位元素保存到变量array里面
for (p = a + n - 1; p > a; p--)//指针p指向数组的末位元素,循环开始
*p = *(p - 1); //把前一位元素(p-1)的值复制到当前位置p
*a = array; //再把array里面存储的值填回数组首位(a)。
m--; //移动次数减1
if (m > 0) //m减为0表示移动完成,否则继续
move(a, n, m); //如果未完成移动,再来一次。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询