【C语言】内存复制函数memcpy
条评论内存复制函数
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));
参考: