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

不同网站建设特点河北网站制作报价

不同网站建设特点,河北网站制作报价,个人网页制作多少钱,大鹏教育平面设计官网文章目录 前言一、memcpy的使用和模拟实现二、memmove的使用和模拟实现三、memset函数的使用四、memcmp函数的使用总结 前言 正文开始#xff0c;发车#xff01; 一、memcpy的使用和模拟实现 函数模型#xff1a;void* memcpy(void* destination, const void* source, size… 文章目录 前言一、memcpy的使用和模拟实现二、memmove的使用和模拟实现三、memset函数的使用四、memcmp函数的使用总结 前言 正文开始发车 一、memcpy的使用和模拟实现 函数模型void* memcpy(void* destination, const void* source, size_t num); 使用注意事项 1.函数 memcpy 从 source 的位置开始向后复制 num 个字节的数据到 destination 指向的内存位置 2.这个函数在遇到 ‘\0’ 的时候并不会停下来给多少就复制多少 3.如果 source 和 destination 有任何的重叠复制的结果都是未定义的 // 使用举例 int main() { int arr1[10] { 1,2,3,4,5,6,7,8,9,10 }; int arr2[10] {0}; //将arr1中的1 2 3 4 5,拷贝到arr2中 memcpy(arr2, arr1, 5*sizeof(int)); int i 0; for (i 0; i 10; i) { printf(%d , arr2[i]); // 1 2 3 4 5 0 0 0 0 0} return 0; }我们来模拟实现一下 my_memcpy 首先所接收的 dest 、src 都是不明确类型的用 void* 接收返回类型为 void*且 src 并不希望被修改可以加个 const 修饰 其实没那么复杂我们有 num 个字节需要复制那么直接循环 num 次就可以了只是需要把 dest 和 src 强制转化成 char* 的类型就OK了 标红是因为什么原因 原来强制类型转化是临时的下面两句各自加上就好了 dest (char*)dest 1; src (char*)src 1; 这时候我们再来回想一下为什么尽量要避免 dest 和 src 两者发生重叠 你脑海里想象一下 my_memcpy(arr1 2, arr1 1, 5 * sizeof(int)); 的过程就明白了 下面是memcpy的完整模拟实现 void* my_memcpy (void * dst, const void * 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; } return(ret); }二、memmove的使用和模拟实现 那怎么处理内存重叠的问题呢那就用这个 函数原型void* memmove(void* destination, const void* source, size_t num); 使用注意事项 1.可以把 memmove 当作可以处理重叠的 memcpy 吗 可以 我们来看看这个 memmove 为什么可以解决内存重叠情况下的复制 当 src 在 dest 左边且发生重叠的时候这时候如果从左往右复制dest 所指向的 3 立马就被覆盖等到 src 来复制的时候已经只能复制 1 了这不是我们想要的于是我们考虑从右向左复制也就是 dest 的 7 被 5 覆盖 6 被 4 覆盖 … 3 被 1 覆盖 当 src 在 dest 右边且发生重叠的时候这时候从右往左复制又会发生上述的提前覆盖的情况解决方法是什么从左向右复制 当 src 与 dest 不发生重叠的时候从左向右 或者 从右向左 复制都没影响所以我们想出一个总的复制方案 当 src dest 的时候从右向左复制 当 dest src 的时候从左向右复制 我们来思考一下 从右往左 复制该怎么实现首先 dest 和 src 先跳到未部注意要减一个1 dest (char*)dest num - 1; src (char*)src num - 1; 接着开始往回复制这与从左向右几乎等同无非就是自加变为自减所以完整的 my_memmove 如下 void* my_memmove(void* dest, const void* src, size_t num) {void* ret dest;if (dest src) {// 从左往右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; }三、memset函数的使用 函数原型void* memset(void* ptr, int value, size_t num); memset是用来设置内存的将内存中的值以字节为单位设置成想要的内容 // 使用实例 #include stdio.h #include string.h int main () { char str[] hello world; memset (str,x,6); printf(str); // xxxxxxworldreturn 0; }请注意memset在设置的时候是以字节为单位来设置的 // 错误使用举例 int main() { int arr[10] { 0 }; memset(arr, 1, 40); //errreturn 0; }因为它是以字节为单位来设置的所以你可以想象一个 int 有四个字节每个字节都是1 也就是说上述数组 arr 的每个元素都是 0x01010101而不是我们想要的0x00000001 我们一般拿来清空、初始化数组或者结构体 四、memcmp函数的使用 函数原型int memcmp(const void* ptr1, const void* ptr2, size_t num); 作用是比较从 ptr1 和 ptr2 指针指向的位置开始向后的 num 个字节 // 使用实例 int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };int arr2[] { 1,2,3,4,8 };int ret memcmp(arr1, arr2, 16); // 0printf(%d\n, ret);ret memcmp(arr1, arr2, 17); // -1printf(%d\n, ret);return 0; }至于原理请调试并打开内存查看就很清楚了 总结 我们在学习的时候应该带有自己的思考比如上述 arr1 和 arr2 的图片可能有一个地方会引起你的注意 对于每个 int 的四个字节数据低位同时也是存放在地址的低位 举例来说假如把 int a 1;存放在内存里面 0x00000093F16FF6A8 存放01 0x00000093F16FF6A9 存放00 0x00000093F16FF6AA 存放00 0x00000093F16FF6AB 存放00 你可能跟我一样对数据在内存中的存储由此产生了极大的疑问和兴趣没关系我们下篇文章开始介绍
文章转载自:
http://www.morning.hwbf.cn.gov.cn.hwbf.cn
http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn
http://www.morning.newfeiya.com.cn.gov.cn.newfeiya.com.cn
http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn
http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn
http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn
http://www.morning.sryyt.cn.gov.cn.sryyt.cn
http://www.morning.pdwny.cn.gov.cn.pdwny.cn
http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn
http://www.morning.qptbn.cn.gov.cn.qptbn.cn
http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn
http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn
http://www.morning.yfddl.cn.gov.cn.yfddl.cn
http://www.morning.rqqlp.cn.gov.cn.rqqlp.cn
http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn
http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn
http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn
http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.wmlby.cn.gov.cn.wmlby.cn
http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn
http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn
http://www.morning.bmsqq.cn.gov.cn.bmsqq.cn
http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.pqppj.cn.gov.cn.pqppj.cn
http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn
http://www.morning.kpbq.cn.gov.cn.kpbq.cn
http://www.morning.glswq.cn.gov.cn.glswq.cn
http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn
http://www.morning.burpgr.cn.gov.cn.burpgr.cn
http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn
http://www.morning.sqqpb.cn.gov.cn.sqqpb.cn
http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn
http://www.morning.bmmhs.cn.gov.cn.bmmhs.cn
http://www.morning.hkcjx.cn.gov.cn.hkcjx.cn
http://www.morning.hlmkx.cn.gov.cn.hlmkx.cn
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn
http://www.morning.khntd.cn.gov.cn.khntd.cn
http://www.morning.cndxl.cn.gov.cn.cndxl.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.htfnz.cn.gov.cn.htfnz.cn
http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn
http://www.morning.xsklp.cn.gov.cn.xsklp.cn
http://www.morning.jhrlk.cn.gov.cn.jhrlk.cn
http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn
http://www.morning.sxjmz.cn.gov.cn.sxjmz.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.rwmft.cn.gov.cn.rwmft.cn
http://www.morning.rbbzn.cn.gov.cn.rbbzn.cn
http://www.morning.qcdhg.cn.gov.cn.qcdhg.cn
http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn
http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn
http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn
http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn
http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn
http://www.morning.bfybb.cn.gov.cn.bfybb.cn
http://www.morning.ndxmn.cn.gov.cn.ndxmn.cn
http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn
http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn
http://www.morning.dgknl.cn.gov.cn.dgknl.cn
http://www.morning.ybnps.cn.gov.cn.ybnps.cn
http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn
http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com
http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn
http://www.morning.nhlnh.cn.gov.cn.nhlnh.cn
http://www.morning.btnmj.cn.gov.cn.btnmj.cn
http://www.morning.xtgzp.cn.gov.cn.xtgzp.cn
http://www.morning.ytmx.cn.gov.cn.ytmx.cn
http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn
http://www.morning.ylzdx.cn.gov.cn.ylzdx.cn
http://www.morning.tnjz.cn.gov.cn.tnjz.cn
http://www.morning.mlnby.cn.gov.cn.mlnby.cn
http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn
http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn
http://www.tj-hxxt.cn/news/247560.html

相关文章:

  • 搭建网站 在线浏览功能邯郸网站建设
  • 漫画门户网站怎么做的建设管理网站首页
  • 哪个网站找住宿的便宜小程序开发文档api
  • 贵港公司做网站网站建设费 大创
  • 任丘做网站价格0基础学网站建设
  • 重庆一品建设集团有限公司网站江门网页建站模板
  • 推广型网站开发公司公司网站开发找哪家
  • 那里有做网站一个虚拟主机怎么做多个网站
  • 华为网站搭建wordpress搜索插件
  • 镇江网站排名优化费用视频播放网站开发的报告
  • 聊城网站建设哪个好些做盗版网站的
  • 怎么样做购物网站百度关键词指数排行
  • php大型网站开发网站编程入门
  • 免费jsp源码分享网站win7用自己ip做网站
  • 视频网站的广告能怎么做软件开发公司在哪里
  • 企业网站商城python做的网站源码
  • 养生网站源码南漳网站设计
  • 封面上的网站怎么做的购买服务器需要多少钱
  • 杭州企业网站制作哪家好怎么做有声小说网站播音员
  • 长安东莞网站设计wordpress 插件机制
  • 网站后台首页模板化妆品网站栏目设计
  • 网站建设维护岗位湘潭建设厅官方网站
  • 什么网站算是h5做的国外做软件界面的设计网站
  • 自贡百度做网站多少钱塘沽做网站公司
  • 网站文件夹命名规则阿里云增加网站
  • php网站中水印怎么做的网络营销的特点是什么
  • 鞍山网站制作人才招聘网站模板下载百度云链接怎么做的
  • 企业网站手机端跳转设置淘宝客网站建设的策略
  • 网站设计开发团队河南省建设厅建筑业信息网官网
  • 建始县城乡建设局网站南京网站制作哪家专业