当前位置: 首页 > news >正文

常州网站外包wordpress 产品视频上传

常州网站外包,wordpress 产品视频上传,做跨境电商要什么费用,山东省城乡住房建设厅网站目录 memcpy使用和模拟实现memmove使用和模拟实现memset使用memcmp使用 1. memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num) ; 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存的位置这个函数在遇到…目录 memcpy使用和模拟实现memmove使用和模拟实现memset使用memcmp使用 1. memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num) ; 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存的位置这个函数在遇到\0的时候并不会停下来如果source和destination有任何的重叠,复制的结果都是未定义的 1.1 使用 int arr1[] {1,2,3,4,5,6,7,8,9,10}; int arr2[10] { 0 }; memcpy(arr2,arr1,20);int i 0; for (i 0; i 10; i) {printf(%d , arr2[i]); }拷贝arr1前5个数到arr2里 输出: 1.2 模拟实现 void* my_memcpy(void * dest,const void * src,size_t num) {void* ret dest;assert(dest);assert(src);while (num--) {*(char*)dest *(char*)src;dest (char*)dest 1;src (char*)src 1;}return ret; }2. memmove使用和模拟实现 void * momove ( void* destination , cosnt void* source , size_t num) ; 和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的如果源空间和目标空间出现重叠,就得用memmove函数处理 2.1 使用 先看下面的代码 int arr1[] {1,2,3,4,5,6,7,8,9,10}; int arr2[10] { 0 }; my_memcpy(arr13,arr1,20);int i 0; for (i 0; i 10; i) {printf(%d , arr1[i]); }上面是想从arr13也就是从4开始的位置复制5个数据也就是1,2,3,1,2,3,4,5,9,10。但最后的结果却不是这样的原因就是当到重叠的位置时数据已经被之前复制的覆盖过了源数据已经被改变所以出现错误 输出 这时换成memove函数试试 int arr1[] {1,2,3,4,5,6,7,8,9,10}; int arr2[10] { 0 }; memmove(arr13,arr1,20);int i 0; for (i 0; i 10; i) {printf(%d , arr1[i]); }输出 2.2 实现 对于一般的情况,我们直接拷贝数据就行,和memcpy一样。当数据有重叠时可以分为三种情况 第一种目标地址desc在源空间src的左边 这种情况下需要拷贝的数据在拷贝之前不会被覆盖,从前往后拷贝 第二种,目标地址desc在srcnum中间,这种情况从前向后拷贝时原值会被替换,所以要从后往前拷贝 第三种,目标地址在src的右边,这个时候从左到右拷贝或从右到左都行 void* my_memmove(void * dest,const void * src,size_t num) {assert(dest);assert(src);void* ret dest;//从前往后拷if (dest src || (char*)dest ((char*)srcnum)) {while (num--) {*(char*)dest *(char*)src;dest (char*)dest 1;src (char*)src 1;}}//从后往前拷else {dest (char*)dest num - 1;src (char*)src num - 1;while (num--) {*(char*)dest *(char*)src;dest (char*)dest - 1;src (char*)src - 1;}}return ret; }3. memeset函数使用 void * memeset ( void * ptr, int value , size_t num) ; memeset是用来设置内存的,将内存中的值以字节为单位设置为想要的内 char str[] hello world; memset(str,x,6); printf(str);将字符串的前6个字符改为x 输出: 4. memcmp函数的使用 int memcmp ( cosnt void * ptr1, const void * ptr2, size_t num) ; 比较从ptr1和ptr2开始,向后num个字节的内容返回值如下: char buffer1[] DWgaOtP12df0; char buffer2[] DWGaOtP12df0; int n; n memcmp(buffer1,buffer2,sizeof(buffer1));printf(%d , n);上面的两个字符串,其中g小写和大写,由于小写的值更大,所以会返回大于0的数 输出:
http://www.zqtcl.cn/news/77721/

相关文章:

  • 广州智能建站模板免费建网上商城
  • 北丰科技网站建设网站建设备案多长时间
  • 泰安工程建设信息网站备案 网站信息 备注
  • 网站后台密码在哪里棉花数据检验与加工平台
  • 河北省永清县建设局网站高端品牌男鞋
  • 兰州做网站公司es5188如何更快的让百度收录网站
  • 网站建设辅助网络营销的概念及功能
  • 广州网站整站优化广州建站外包公司历史长
  • pycharm 做网站哪个好网易企业邮箱后缀怎么设置
  • jsp做网站前端实例企业信息化建设网站
  • wordpress的极限访问量沈阳网站seo
  • 做网站用什么软件设计好乐趣公园 wordpress
  • wordpress回收站在哪做网站广告软件
  • 小程序跳转到网站威海网站优化
  • 个人如何建立免费网站自建wordpress tag标签页面
  • 怎么做网站后门网站策划案例
  • 郑州教育培训机构网站建设开发公司工程部年终工作总结及明年工作计划
  • 外贸网站 自建应用商店下载app软件
  • 做 58 那样的网站自学小程序开发
  • 如何提升网站收录做网站设计的都转行干啥了
  • 做外贸网哪些网站免费网上接装修工程哪家平台好
  • 屏蔽某网站怎么做燕窝网站怎么做的
  • 大连网站建设哪里好熊掌号结合网站做seo
  • 山东省高中生发展报告在哪个网站做如何设计公众号
  • 做教育app的网站嘉兴网站建设一薇
  • 网站开发技术项目实战产品怎么在网上推广
  • 网站模版 模板编程常用代码大全
  • 网站建设行业新闻动态哪个网站做推广做的最好
  • 汽车行业网站建设维护服务个人网站设计实验原理
  • 网站建设做的快wordpress全图水印插件