内存复制函数

void * memcpy (void * destination, const void * source, size_t num);

将 source 指向的地址处的 num 个字节,拷贝到 destination 指向的地址处,注意,是 num 个字节

实例

下面这段程序的运行结果?

int main ()
{
    int a[10] = {0,1,2,3,4,5,6,7,8,9};
    memcpy(a + 3, a, 5);
    for(int i = 0; i<10; i++)
    {
        printf("%d", a[i]);
    }
    return 0;
}

解答:0 1 2 0 1 5 6 7 8 9

因为 memcpy 的最后一个参数是需要拷贝的字节的数目!一个 int 类型占 4 个字节!这样的话,本题 5 个字节,实际上只能移动 2 个数字(往大的去)

如果想要达到将 a 地址开始的 5 个元素拷贝到 a+3 地址处,应该这样写:

memcpy(a + 3, a, 5*sizeof(int));

参考: