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

网站建设费用一年西地那非副作用太强了

网站建设费用一年,西地那非副作用太强了,wordpress 十大插件,wordpress 主题 知乎C语言程序设计笔记---027 C语言之模拟实现memcpy函数、memcpy函数1、介绍memcpy函数1.1、模拟实现memcpy函数 2、介绍memmove函数2.1、模拟实现memmove函数 3、结语 C语言之模拟实现memcpy函数、memcpy函数 前言#xff1a; 通过C语言内存函数的知识#xff0c;这篇将对memc… C语言程序设计笔记---027 C语言之模拟实现memcpy函数、memcpy函数1、介绍memcpy函数1.1、模拟实现memcpy函数 2、介绍memmove函数2.1、模拟实现memmove函数 3、结语 C语言之模拟实现memcpy函数、memcpy函数 前言 通过C语言内存函数的知识这篇将对memcpy函数、memcpy函数进行深入学习底层原理的知识并模拟实现对应功能。 /知识点汇总/ 内存相关的函数 1.memcpy –strcpy 2.memmove 3.memset 4.memcmp — strcmp 1、介绍memcpy函数 函数原型void *memcpy( void dest, const void src, size_t count ); ---- void 说明兼容任意类型 函数功能将源头内存的数据拷贝到目标内存中返回值类型为void 头文件string.h 使用注意事项 (1)、与strncpy不同的是参数num和count。一个是指需要拷贝的元素个数一个是指需要拷贝的元素字节大小 (2)、相比strcpy函数仅仅是操作字符串进行拷贝而memcpy内存中的数据不仅仅是操作字符。 示例代码如下 #include stdio.h #include string.h int main() {int arr1[10] { 0 };int arr2[] { 1,2,3,4,5 };memcpy(arr1, arr2, 20);//20 4*5int sz sizeof(arr1) / sizeof(arr1[0]);for (int i 0; i sz; i){printf(%d , arr1[i]);}return 0; }1.1、模拟实现memcpy函数 #include stdio.h #include string.h #include assert.h //注意void* 不能进行运算操作 //另外这里必须使用(char*)进行操作因为如果是其它类型就会造成数据上的丢失等问题 --- 联想类似于qsort一个个字节进行操作 void* my_memcpy(void* dest, const void* src, size_t sz)//sz拷贝多少个字节 {assert(dest src);while (sz--)//以一个字节一个字节的拷贝{*(char*)dest *(char*)src;dest (char*)dest 1;//注意强制类型转换具备临时属性所以需要(char*)dest1来赋值保存数据不能用destsrc (char*)src 1;} } int main() {int arr1[10] { 0 };int arr2[] { 1,2,3,4,5 };my_memcpy(arr1, arr2, 20);//20 4*5for (int i 0; i 5; i){printf(%d , arr1[i]);}return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.用一个指针变量始终保存目标字符串的起始地址以免目标起始地址发生改变导致函数的返回值错误 3.sz–因为memcpy是以字节为单位进行的拷贝所以为了兼容多种类型就需要强转为char*类型之后再操作。可回顾前面篇章模拟qsort函数的内容 扩展memcpy对同一内存空间的操作问题 以我们自己模拟的memcpy函数导致问题的原因 调试可知它是以一个一个字节进行的拷贝 所以比如对0x11223344进行拷贝为01操作是0x01010101达不到我们的预期 而我们预期应该是0x11223301,然后下一个元素比如0x11224401 但是库函数的memcpy在当前的编译器条件下弥补了这样的错误问题。说明库函数作者完善的很全面同时更复杂。 2、介绍memmove函数 函数原型void *memmove( void dest, const void src, size_t count ); 函数功能将源头内存的数据。拷贝到目标内存中且与memcpy相比可以拷贝同一空间的数据返回值类型为void 头文件string.h 使用注意事项 (1)、memcpy只能对不同空间内存之间的数据进行操作 即不重叠内存的拷贝可以使用memcpy而重叠的内存空间则需要用memmove函数 示例代码如下 #include stdio.h #include string.h int main() {int arr1[10] { 0 };int arr2[] { 1,2,3,4,5 };memmove(arr1, arr2, 20);//20 4*5int sz sizeof(arr1) / sizeof(arr1[0]);for (int i 0; i sz; i){printf(%d , arr1[i]);}return 0; }2.1、模拟实现memmove函数 #include stdio.h #include assert.h void* my_memmove(void* dest, const void* src, size_t sz) {assert(dest src);char* ret (char*)dest;if (dest src)//从前向后拷贝{while (sz--){*((char*)dest) *((char*)src);dest (char*)dest 1;src (char*)src 1;}}else//从后向前拷贝{while (sz--)//sz-- 先用再减即先判断sz20为真用完后减1进入循环此时sz19{*((char*)dest sz) *((char*)src sz);}}return ret; } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr 2, arr, 20);//20 4*5int sz sizeof(arr) / sizeof(arr[0]);for (int i 0; i sz; i){printf(%d , arr[i]);}return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.用一个指针变量始终保存目标字符串的起始地址以免目标起始地址发生改变导致函数的返回值错误 3.dest src表示目标空间地址在源地址前面适合从源地址的高位开始拷贝即从前向后拷贝 值得注意的是因为memmove是以字节为单位进行的拷贝所以为了兼容多种类型就需要强转为char*类型之后再操作。可回顾前面篇章模拟qsort函数的内容 4.相反否则就是目标空间地址在源地址后面适合从源地址的低位开始拷贝即从后向前拷贝 值得注意的是对于源地址的最后一个数据地址是指针sz从后向前偏移。 小结 1.memcpy只能对不同空间内存之间的数据进行操作 即不重叠内存的拷贝可以使用memcpy而重叠的内存空间则需要用memmove函数 2.库函数可以实现标准规定 以memcpy来实现不重叠的内存的拷贝且要求能达到60即可 以memmove来实现重叠内存的拷贝 3.但是发现当前的编译环境下memcpy同样能实现重叠内存的拷贝远远满足60分的要求100分所以于编译环境相关建议相应的功能交给适合的函数实现即可 3、结语 学习函数的最实用的方式就是用自己的逻辑简单实现一些类似的功能 半亩方糖一鉴开天光云影共徘徊。 问渠哪得清如许?为有源头活水来。–朱熹观书有感
http://www.hkea.cn/news/14449845/

相关文章:

  • 可以举报一个做网络网站发大财吗中国做的比较好的网站有哪些
  • wordpress图文混排深圳搜狗seo
  • 广州 环保 凡人网站建设国外网站服务器租用
  • 苏州企业建站系统模板青岛网站建设优化
  • 石狮服装城商家微网站建设商城网站建设与维护方案
  • 外贸网站外包wordpress免费创建博客
  • 国产前端框架 做网站凡科代理建站登录
  • 推荐系统网站开发河源盛世网站建设
  • 网站建设三要素wordpress如何设置会员中心
  • 网站可以嵌入WordPress省财政厅门户网站三基建设
  • 百度做公司网站多少钱9个广州seo推广神技
  • 延安市违法建设举报网站网站不兼容怎么办啊
  • 人人做全免费网站网站建设教程 金旭亮
  • 天津网站建设 熊掌号wordpress 前台评论
  • wordpress优秀移动站点网盟推广有哪些
  • 数据过滤网站模板下载手机微信网站
  • 做试玩网站30分钟网站建设教程视频
  • 开发网站教程做更好的自己 网站
  • 建网站买什么主机重庆网络公司一览表
  • 个人怎么做旅游网站昆网站制作
  • 十堰市建设网站的公司ucloud网站开发
  • 做店铺装修的公司网站企业网站建设ppt介绍
  • 深圳高端做网站公司公司网站内容相近
  • 网站群发软文软件wordpress 下雪插件
  • wordpress 游戏网站速度快的wordpress主机
  • 网站设计目标与背景青羊区企业网站建设策划
  • 网站建设与管理读书心得wordpress 显示一个类目
  • 一个网站能多个域名做不同站点什么是无主体新增网站
  • 老网站改版做别的门户网站为什么衰落
  • edm营销网站qq官方网站登录入口