假设我有一个像这样的整数数组
#define MAX 5
int bar [MAX] = {0};
int foo [MAX] = {3,1,0,0,0};
现在我想移动这个数组,使所有空条目都在左边,即bar = {0,0,0,3,1}
.
我以为我可以做到这一点
- 找出我必须执行的轮班次数
memmove()
用来做轮班。
我用下面的循环解决了 1.
for (shift = MAX - 1; shift >= 0; --shift) {
if (foo[shift]) break;
}
但是我不知道如何使用memmove()
now 来执行转变,我试图这样做memmove(bar + shift, foo, MAX * sizeof(*foo)-1);
但没有成功。
是memmove()
适合这项工作的正确工具吗?如前所述,如何循环整数数组?如果这发生在bar
作为指针传递的函数内部怎么办?