memcpy内存复制函数的使用

来源:互联网 发布:excel中数据透视表 编辑:程序博客网 时间:2024/06/04 18:42
memcpy是C/C++里重要而且常用的函数,但它也是容易让初学者迷惑的函数。
先看一下memcpy的定义:


void *memcpy(void *dest, const void *src, size_t n);


功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

简而言之,memcpy是一个内存复制函数

注意,memcpy的第一个方法是目标地址,而不是源地址


看一下例子:


#include <stdio.h>
#include <string.h>


int main(){
    char srcChar[20]={"abcdefghijklmnopqrst"};
    char destChar[20]={"01234567890123456789"};


    char *srcAddr=srcChar;
    char *destAddr=destChar;

 /*从srcChar复制10个字符到destAddr*/
    memcpy(destAddr,srcAddr,10);


    int i=0;

    for(i=0;i<20;i++){
        printf("%c",destChar[i]);
    }


    return 0;
}

上例的运行结果是:
abcdefghij0123456789


上例中的memcpy(destAddr,srcAddr,10)是最简单的应用。


修改一下上例中的memcpy语句:

memcpy(destAddr+1,srcAddr,10);

结果:0abcdefghij123456789


memcpy(destAddr+1,srcAddr+5,10);

结果:0fghijklmno123456789


memcpy(destAddr+5,srcAddr+5,10);

结果:01234fghijklmno56789


利用对源地址和目标地址的偏移操作,可实现从源内存的任意位置开始复制,复制到目标内存的任意位置

原创粉丝点击