for (int i = 0; i < size; i++) {
dst[i] = src[i];
}
与memove不同:
memmove(dst, src, size);
当我们在SRC和DST之间重叠时?
#include <stdio.h>
#include <string.h>
static void Copy(char *dst, const char *src, size_t size)
{
for (int i = 0; i < size; ++i)
dst[i] = src[i];
}
int main(void)
{
char b0[3] = { 'A', 'B', 'C' };
char b1[3] = { 'A', 'B', 'C' };
memmove(b0+1, b0+0, 2);
printf("After memmove: b0[1] = %c, b0[2] = %c.\n", b0[1], b0[2]);
Copy(b1+1, b1+0, 2);
printf("After Copy: b1[1] = %c, b1[2] = %c.\n", b1[1], b1[2]);
}
IS:MemMove之后:B0 [1] = A,B0 [2] =B。 复制后:b1 [1] = a,b1 [2] = A。