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

长沙市网站制作闽清县建设局网站

长沙市网站制作,闽清县建设局网站,软件工程师行业现状及发展趋势,申请免费空间目录 系列文章目录 前言 1. memcpy使⽤和模拟实现 1.2 memcpy函数的模拟实现: 2. memmove 使⽤和模拟实现 2.1memmove的模拟实现#xff1a; 3. memset 函数的使⽤ 4. memcmp 函数的使⽤ 系列文章目录 ✅作者简介#xff1a;大家好#xff0c;我是橘橙黄又青#xff… 目录 系列文章目录 前言 1. memcpy使⽤和模拟实现 1.2 memcpy函数的模拟实现: 2. memmove 使⽤和模拟实现 2.1memmove的模拟实现 3. memset 函数的使⽤ 4. memcmp 函数的使⽤ 系列文章目录 ✅作者简介大家好我是橘橙黄又青一个想要与大家共同进步的男人 个人主页橘橙黄又青_C语言,指针-CSDN博客 前言 学习c语言的只要内存函数及其模拟实现掌握函数返回类型并模拟。 正文开始了 1. memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数内容作用复制数据和前面strcpy相似。返回类型无返回 1.函数memcpy从source的位置开始 向后复制 num个 字节 的数据到destination指向的内存位置. 2.这个函数在遇到 \0 的时候并不会停下来. 3.如果source和destination有任何的重叠复制的结果都是未定义的. 也就是说c语言对memcpy的定义是对 不重复内存数据类型进行复制举个例子: arr[20] {1, 2,3, 4, 5, 6, 7, 8} memcpy(arr, arr3, 4)//把arr[2]向后的4个字节复制到arr向后的4个字节 memcpy复制都是在同一个数组内存重叠了这样是错误的。 memcpy的正确使用例子,代码1 #include stdio.h #include string.h int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] { 0 };memcpy(arr2, arr1, 20);//把arr前面4个整形拷贝到arr2中int i 0;for (i 0; i 10; i){printf(%d , arr2[i]);}return 0; } 输出结果 1.2 memcpy函数的模拟实现: #include stdio.h #include string.hvoid * my_memcpy ( void * dst, const void * src, size_t count)//以字节单位复制 {void * ret dst;assert(dst);//断言是否为NULLassert(src);while (count--) {//搬运conut个字节*(char *)dst *(char *)src;//void不能解引用强制转换后在解引用。dst (char *)dst 1;//det但是void类型不能所以可以写成char*)dst;但是一些编译器不支持所以最好写成改代码这样。src (char *)src 1;}return(ret);//返回起始地址 }int main() {int arr1[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int arr2[10] { 0 };my_memcpy(arr2, arr1 3, 5 * sizeof(arr[0]);//把4 5 6 78复制到arr2去int i 0;for (i 0; i 10; i){printf(%d , arr2[i]);}return 0; } 那对于重叠的内存数据怎么解决呢cy语言对于重叠的内存交给memmove来处理。 2. memmove 使⽤和模拟实现 函数内容 void * memmove ( void * destination, const void * source, size_t num ); 函数内容作用复制数据。返回类型无返回。 1.和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。 2.如果源空间和⽬标空间出现重叠就得使⽤memmove函数处理。 举例1 #include stdio.h #include string.h int main() {int arr1[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };memmove(arr12, arr1, 20);//把12345拷贝到arr1中的34567上。int i 0;for (i 0; i 10; i){printf(%d , arr[i]);}return 0 } 输出结果 2.1memmove的模拟实现 代码分析时有3种情况待我慢慢给你们分析 void* my_memmove(void* dst, const void* src, size_t count) {void* ret dst;if (dst src || (char*)dst ((char*)src count)) {//从后面往前面复制是第1.2种情况while (count--) {*(char*)dst *(char*)src;dst (char*)dst 1;src (char*)src 1;}}else {//从前面往后面复制.第3种情况选择从前面往后面复制dst (char*)dst count - 1;src (char*)src count - 1;while (count--) {*(char*)dst *(char*)src;dst (char*)dst - 1;src (char*)src - 1;}}return(ret); } #include stdio.h #include string.h int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr1 2, arr1, 20);//把1234拷贝到arr1中的3456上。int i 0;for (i 0; i 10; i){printf(%d , arr1[i]);}return 0; } 第1种情况 第2种情况 第3种情况 分析第2种 3. memset 函数的使⽤ 函数内容 void * memset ( void * ptr, int value, size_t num ); 功能memset是⽤来设置内存的将内存中的值以字节为单位设置成想要的内容。 案例1 #include stdio.h #include string.h int main () {char str[] hello world;memset (str,x,6);//把str前面6个字节换成xprintf(str);return 0; } 输出结果 这里我们给一个错误案例2 #include stdio.h #include string.h int main() {int arr[10] { 0 };memset(arr, 1, 40);printf(arr);return 0; } 输出结果 总结memset函数是以字节为单位来改的 4. memcmp 函数的使⽤ 函数内容 int memcmp ( const void * ptr1, const void * ptr2, size_t num ); 功能⽐较从ptr1和ptr2指针指向的位置开始向后的num个字节。 返回类型int以strcmo相似。 案例1 #include stdio.h #include string.h int main() {char buffer1[] DWgaOtP12df0;char buffer2[] DWGAOTP12DF0;int n memcmp(buffer1, buffer2, sizeof(buffer1));if (n 0) printf(%s is greater than %s.\n, buffer1, buffer2);else if (n 0) printf(%s is less than %s.\n, buffer1, buffer2);elseprintf(%s is the same as %s.\n, buffer1, buffer2);return 0; } 输出结果 好了今天就分享到这里了都看到这里了点一个赞吧谢谢。
http://www.huolong8.cn/news/84432/

相关文章:

  • 怎么开发销售网站平面设计最新招聘信息
  • 网站如何做收款二维码网站建设公司 成都
  • wordpress建站云平台先做网站还是app
  • 系部网站建设中期检查表安徽省建筑人员信息网
  • 兰州哪里做网站织梦网站图片一直转圈
  • 网站你懂我意思正能量免费下载wordpress不能评论
  • 模板网站好优化吗asp.net做电商网站设计
  • 深圳网站建设制作厂家河南做网站哪个平台好
  • 免费的网站cmsthinkphp微网站开发
  • 什么网站免费做简历东城企业网站开发
  • 网站优化合同模板html编写新闻页面
  • 网站开发项目经验描述怎么写天津网站seo策划
  • 网站建设企业邮箱制作网站网站建设公司怎样做账
  • 河南做网站公司制作网站网络科技公司
  • 东莞专业网站设计如何制作手机版网页
  • 游戏软件开发就业前景成都网站建设方案优化
  • 网站 橙色校内 实训网站 建设
  • 建立网站需要哪些wordpress比特币平台
  • 城市之星福州网站建设无忧网站模板
  • 做一名网站编辑要具备什么资格电子会员卡系统哪个好
  • 天津网络优化网站建设展位设计
  • linux版本的wordpress网站sem优化怎么做
  • 吉林企业网站模板建站哪个好学网络推广哪个培训机构好
  • 域名备案用的网站建设方案app推广赚佣金
  • linux网站建设技术指南 pdf兰州公司做网站的价格
  • 国内著名网站建设公司wordpress 图片打开慢
  • 购物网站建设推进表dede网站底部
  • 淘金网站建设网站建设的战略作用
  • 搜索引擎网站有哪些郑州做营销型网站公司
  • 选一个网站做seo南开集团网站建设