短视频缺音效?2026年免费音效素材网站推荐榜单 自媒体/影视后期/游戏
2026/1/15 23:58:32
void*memcpy(void*destination,constvoid*source,size_t num);#include<stdio.h>#include<string.h>intmain(){intarr1[]={1,2,3,4,5,6,7,8,9,10};intarr2[10]={0};memcpy(arr2,arr1,20);// 拷贝20个字节(5个int)for(inti=0;i<10;i++){printf("%d ",arr2[i]);}// 输出: 1 2 3 4 5 0 0 0 0 0return0;}void*memcpy(void*dst,constvoid*src,size_t count){void*ret=dst;assert(dst);assert(src);/* copy from lower addresses to higher addresses */while(count--){*(char*)dst=*(char*)src;dst=(char*)dst+1;src=(char*)src+1;}returnret;}void*memmove(void*destination,constvoid*source,size_t num);#include<stdio.h>#include<string.h>intmain(){intarr1[]={1,2,3,4,5,6,7,8,9,10};memmove(arr1+2,arr1,20);// 将前5个元素拷贝到从第3个元素开始的位置for(inti=0;i<10;i++){printf("%d ",arr1[i]);}// 输出: 1 2 1 2 3 4 5 8 9 10return0;}void*memmove(void*dst,constvoid*src,size_t count){void*ret=dst;if(dst<=src||(char*)dst>=((char*)src+count)){/* Non-Overlapping Buffers - 从低地址向高地址拷贝 */while(count--){*(char*)dst=*(char*)src;dst=(char*)dst+1;src=(char*)src+1;}}else{/* Overlapping Buffers - 从高地址向低地址拷贝 */dst=(char*)dst+count-1;src=(char*)src+count-1;while(count--){*(char*)dst=*(char*)src;dst=(char*)dst-1;src=(char*)src-1;}}returnret;}void*memset(void*ptr,intvalue,size_t num);#include<stdio.h>#include<string.h>intmain(){charstr[]="hello world";memset(str,'x',6);// 将前6个字节设置为'x'printf("%s\n",str);// 输出: xxxxxxworld// 也可以用于初始化数组intarr[10];memset(arr,0,sizeof(arr));// 将整个数组初始化为0return0;}intmemcmp(constvoid*ptr1,constvoid*ptr2,size_t num);| 返回值 | 含义 |
|---|---|
| <0 | 第一个不匹配的字节在prt1中的值小于prt2中的值 |
| =0 | 两个内存块的内容相等 |
| >0 | 第一个不匹配的字节在prt1中的值大于prt2中的值 |
#include<stdio.h>#include<string.h>intmain(){charbuffer1[]="DWgaOtP12df0";charbuffer2[]="DWGAOTP12DF0";intn;n=memcmp(buffer1,buffer2,sizeof(buffer1));if(n>0)printf("'%s' is greater than '%s'.\n",buffer1,buffer2);elseif(n<0)printf("'%s' is less than '%s'.\n",buffer1,buffer2);elseprintf("'%s' is the same as '%s'.\n",buffer1,buffer2);return0;}