调用函数实现内存拷贝以及手动实现内存拷贝 ------ memmove
1 #include<memory.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include <string.h> 5 6 7 // memmove 是按整体拷贝 memcpy 是按字节拷贝 8 void * mymemmove(void * _Dst,const void * _Src,size_t _Size);// 自己实现memmove 9 10 void main() 11 { 12 int a[5] = { 1, 2, 3, 4, 5 }; 13 int b[5]; 14 memmove(b, a, 12);// 将a数组中的前三个元素拷贝到b数组 15 for (int i = 0; i < 5; i++) 16 { 17 printf("%d , %d\n",a[i],b[i]); 18 } 19 20 char str1[32] = "abcdefghijklmnopqrstuvwxyz"; 21 char str2[32] = "**************************"; 22 23 memmove(str2,str1,6); 24 printf("%s , %s\n",str1,str2); 25 26 memmove(str1 + 2, str1, 4); 27 printf("%s , %s\n",str1,str2); 28 29 mymemmove(str2, str1, 10); 30 printf("%s , %s\n", str1, str2); 31 system("pause"); 32 } 33 34 void * mymemmove(void * _Dst, const void * _Src, size_t _Size) 35 { 36 if (_Dst==NULL || _Src==NULL) 37 { 38 return NULL; 39 } 40 41 void *psrc = malloc(_Size);// 分配内存 42 memcpy(psrc, _Src, _Size);//整体拷贝到临时分配的内存 43 memcpy(_Dst,psrc,_Size); 44 free(psrc); 45 return _Dst; 46 } 47 48 49 /*************************运行结果***************************/ 50 51 /* 52 1 , 1 53 2 , 2 54 3 , 3 55 4 , -858993460 56 5 , -858993460 57 abcdefghijklmnopqrstuvwxyz , abcdef******************** 58 ababcdghijklmnopqrstuvwxyz , abcdef******************** 59 ababcdghijklmnopqrstuvwxyz , ababcdghij**************** 60 请按任意键继续. . . 61 */
长风破浪会有时,直挂云帆济沧海
posted on 2015-05-12 14:53 Dragon-wuxl 阅读(181) 评论(0) 收藏 举报
浙公网安备 33010602011771号