先看一下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
利用对源地址和目标地址的偏移操作,可实现从源内存的任意位置开始复制,复制到目标内存的任意位置